Changeset e1b883b20ec1cfcf01b25f26458eda3df0a81947

Show
Ignore:
Timestamp:
05/04/07 17:58:08 (2 years ago)
Author:
Rémi Denis-Courmont <rem@videolan.org>
git-committer:
Rémi Denis-Courmont <rem@videolan.org> 1175788688 +0000
git-parent:

[f46a9806fe5995dd963920ab4ecdbf2c48e6d401]

git-author:
Rémi Denis-Courmont <rem@videolan.org> 1175788688 +0000
Message:

Handle I/O errors properly
(disk full?)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • src/input/meta.c

    rd3fe7f2 re1b883b  
    4040                                uint32_t *pi_mandatory, uint32_t *pi_optional ) 
    4141{ 
     42    (void)p_playlist; 
    4243    *pi_mandatory = VLC_META_ENGINE_TITLE | VLC_META_ENGINE_ARTIST; 
    4344    assert( p_item->p_meta ); 
     
    251252    if( p_stream ) 
    252253    { 
    253         void *p_buffer = malloc( 1<<16 )
     254        uint8_t p_buffer[65536]
    254255        long int l_read; 
    255256        FILE *p_file = utf8_fopen( psz_filename+7, "w" ); 
    256         while( ( l_read = stream_Read( p_stream, p_buffer, 1<<16 ) ) ) 
     257        int err = 0; 
     258        while( ( l_read = stream_Read( p_stream, p_buffer, sizeof (p_buffer) ) ) ) 
    257259        { 
    258             fwrite( p_buffer, l_read, 1, p_file ); 
     260            if( fwrite( p_buffer, l_read, 1, p_file ) != 1 ) 
     261            { 
     262                err = errno; 
     263                break; 
     264            } 
    259265        } 
    260         free( p_buffer ); 
    261         fclose( p_file )
     266        if( fclose( p_file ) && !err ) 
     267            err = errno
    262268        stream_Delete( p_stream ); 
    263         msg_Dbg( p_playlist, "album art saved to %s\n", psz_filename ); 
    264269        free( p_item->p_meta->psz_arturl ); 
     270 
     271        if( err ) 
     272            msg_Err( p_playlist, "%s: %s", psz_filename, strerror( err ) ); 
     273        else 
     274            msg_Dbg( p_playlist, "album art saved to %s\n", psz_filename ); 
     275 
    265276        p_item->p_meta->psz_arturl = strdup( psz_filename ); 
    266277        i_status = VLC_SUCCESS;