X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gst%2Fgstregistrybinary.c;h=2e6451b821cf08a5e4a9b39c4ada3b296a225db8;hb=133511040930ba119ee23cea936dd6a7210f08bb;hp=348b3a726734988c47811040ab2c52d10dc8193b;hpb=66d19b65fb6eee8283a6c2ac742be251f66d631c;p=platform%2Fupstream%2Fgstreamer.git diff --git a/gst/gstregistrybinary.c b/gst/gstregistrybinary.c index 348b3a7..2e6451b 100644 --- a/gst/gstregistrybinary.c +++ b/gst/gstregistrybinary.c @@ -18,8 +18,8 @@ * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ /* FIXME: @@ -56,6 +56,8 @@ #include #include #include +#include +#include #include #include #include @@ -219,10 +221,11 @@ gst_registry_binary_cache_write (BinaryRegistryCache * cache, { long written; if (offset != cache->currentoffset) { - if (lseek (cache->cache_fd, offset, SEEK_SET) != 0) { - GST_ERROR ("Seeking to new offset failed"); - return FALSE; + if (lseek (cache->cache_fd, offset, SEEK_SET) < 0) { + GST_ERROR ("Seeking to new offset failed: %s", g_strerror (errno)); + return -1; } + GST_LOG ("Seeked from offset %lu to %lu", offset, cache->currentoffset); cache->currentoffset = offset; } @@ -245,12 +248,13 @@ gst_registry_binary_cache_finish (BinaryRegistryCache * cache, gboolean success) if (close (cache->cache_fd) < 0) goto close_failed; - if (success) { - /* Only do the rename if we wrote the entire file successfully */ - if (g_rename (cache->tmp_location, cache->location) < 0) { - GST_ERROR ("g_rename() failed: %s", g_strerror (errno)); - goto rename_failed; - } + if (!success) + goto fail_after_close; + + /* Only do the rename if we wrote the entire file successfully */ + if (g_rename (cache->tmp_location, cache->location) < 0) { + GST_ERROR ("g_rename() failed: %s", g_strerror (errno)); + goto rename_failed; } g_free (cache->tmp_location); @@ -298,7 +302,7 @@ gst_registry_binary_write_chunk (BinaryRegistryCache * cache, gchar padder[ALIGNMENT] = { 0, }; int padsize = 0; - /* Padding to insert the struct that requiere word alignment */ + /* Padding to insert the struct that require word alignment */ if ((chunk->align) && (alignment (*file_position) != 0)) { padsize = ALIGNMENT - alignment (*file_position); if (gst_registry_binary_cache_write (cache, *file_position, @@ -332,7 +336,7 @@ gst_registry_binary_initialize_magic (GstBinaryRegistryMagic * m) { memset (m, 0, sizeof (GstBinaryRegistryMagic)); - if (!strncpy (m->magic, GST_MAGIC_BINARY_REGISTRY_STR, + if (!memcpy (m->magic, GST_MAGIC_BINARY_REGISTRY_STR, GST_MAGIC_BINARY_REGISTRY_LEN) || !strncpy (m->version, GST_MAGIC_BINARY_VERSION_STR, GST_MAGIC_BINARY_VERSION_LEN)) { @@ -376,7 +380,7 @@ priv_gst_registry_binary_write_cache (GstRegistry * registry, GList * plugins, if (!plugin->filename) continue; - if (plugin->flags & GST_PLUGIN_FLAG_CACHED) { + if (GST_OBJECT_FLAG_IS_SET (plugin, GST_PLUGIN_FLAG_CACHED)) { GStatBuf statbuf; if (g_stat (plugin->filename, &statbuf) < 0 || @@ -523,6 +527,8 @@ priv_gst_registry_binary_read_cache (GstRegistry * registry, /* make sure these types exist */ GST_TYPE_ELEMENT_FACTORY; GST_TYPE_TYPE_FIND_FACTORY; + GST_TYPE_DEVICE_PROVIDER_FACTORY; + GST_TYPE_DYNAMIC_TYPE_FACTORY; #ifndef GST_DISABLE_GST_DEBUG timer = g_timer_new ();