Ignore:
Timestamp:
03/07/09 12:42:23 (15 years ago)
Author:
r2d
Message:

mpccut should now be more resilient to errors

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libmpc/trunk/mpccut/mpccut.c

    r427 r436  
    165165
    166166        while( memcmp(b.key, "AP", 2) != 0 ) {
     167                if ((err = mpc_check_key(b.key)) != MPC_STATUS_OK) {
     168                        fprintf(stderr, "Error : invalid input stream\n");
     169                        goto error;
     170                }
    167171                if (memcmp(b.key, "EI", 2) == 0)
    168172                        copy_data(in_file, i, e.outputFile, b.size + size);
     
    182186
    183187        while( start_block != 0 ){
     188                if ((err = mpc_check_key(b.key)) != MPC_STATUS_OK) {
     189                        fprintf(stderr, "Error : invalid input stream\n");
     190                        goto error;
     191                }
    184192                if (memcmp(b.key, "AP", 2) == 0)
    185193                        start_block--;
     
    193201
    194202        while( block_num != 0 ){
     203                if ((err = mpc_check_key(b.key)) != MPC_STATUS_OK) {
     204                        fprintf(stderr, "Error : invalid input stream\n");
     205                        goto error;
     206                }
    195207                if (memcmp(b.key, "AP", 2) == 0) {
    196208                        if ((e.block_cnt & ((1 << e.seek_pwr) - 1)) == 0) {
     
    214226        writeBlock(&e, "SE", MPC_FALSE, 0); // write end of stream block
    215227
     228error:
    216229        fclose ( e.outputFile );
    217230        fclose ( in_file );
     
    219232        mpc_reader_exit_stdio(&reader);
    220233        mpc_encoder_exit(&e);
     234        if (err != MPC_STATUS_OK)
     235                remove(argv[optind + 1]);
    221236
    222237    return err;
Note: See TracChangeset for help on using the changeset viewer.