diff --git a/audio/squash/Makefile b/audio/squash/Makefile index 48d620efeb95..c2ff0a83f373 100644 --- a/audio/squash/Makefile +++ b/audio/squash/Makefile @@ -1,56 +1,59 @@ PORTNAME= squash PORTVERSION= 1.0 -PORTREVISION= 22 +PORTREVISION= 23 CATEGORIES= audio MASTER_SITES= SAVANNAH MAINTAINER= mandree@FreeBSD.org COMMENT= Learning console-based MP3/OGG player WWW= https://savannah.nongnu.org/projects/squash/ LICENSE= GPLv2+ +DEPRECATED= the upstream port has not been updated since 2004 + LIB_DEPENDS+= libao.so:audio/libao \ libfftw.so:math/fftw \ libFLAC.so:audio/flac \ libid3.so:audio/id3lib \ libmad.so:audio/libmad \ libvorbis.so:audio/libvorbis RUN_DEPENDS= id3v2:audio/id3v2 USES= compiler:c11 gmake ncurses ruby tar:bzip2 MAKE_ARGS= CC="${CC}" CFLAGS+= -fcommon +CFLAGS+= -Wno-macro-redefined # id3lib redefines C99 stdbool.h macros on non-C++ sources OPTIONS_DEFINE= DOCS .include PORTDOCS= * post-patch: @${REINPLACE_CMD} -e "s|--std=gnu99|--std=gnu99 ${CFLAGS}|; \ s|-Iinclude|-Iinclude -I${LOCALBASE}/include|; \ s|-ldl|-L${LOCALBASE}/lib|; \ s}^LDFLAGS.*:=\(.*\)}LDFLAGS :=\1 ${LDFLAGS}}" \ ${WRKSRC}/Makefile @${REINPLACE_CMD} -e "s,/usr/bin/ruby,${RUBY}," \ ${WRKSRC}/extra/*.rb @${REINPLACE_CMD} -e "s,/etc/squash.conf,${PREFIX}/etc/squash.conf," \ ${WRKSRC}/src/global.c do-install: ${MKDIR} ${STAGEDIR}${PREFIX}/bin ${INSTALL_PROGRAM} ${WRKSRC}/squash ${STAGEDIR}${PREFIX}/bin .for FILE in collect_info edit_tag export_music import_music joystick uncollect_info ${INSTALL_SCRIPT} ${WRKSRC}/extra/${FILE}.rb ${STAGEDIR}${PREFIX}/bin .endfor ${MKDIR} ${STAGEDIR}${RUBY_SITELIBDIR} ${INSTALL_DATA} ${WRKSRC}/extra/musicdb_lib.rb ${STAGEDIR}${RUBY_SITELIBDIR} ${INSTALL_DATA} ${WRKSRC}/extra/squash.conf ${STAGEDIR}${PREFIX}/etc/squash.conf.dist ${MKDIR} ${STAGEDIR}${DOCSDIR} .for i in README doc/FEATURES doc/LOCKS doc/INSTALL doc/USERS_GUIDE ${INSTALL_DATA} ${WRKSRC}/${i} ${STAGEDIR}${DOCSDIR} .endfor .include diff --git a/audio/squash/files/patch-src_display.c b/audio/squash/files/patch-src_display.c index 5e8ddf6a3b80..1bf3022f0ab1 100644 --- a/audio/squash/files/patch-src_display.c +++ b/audio/squash/files/patch-src_display.c @@ -1,34 +1,77 @@ --- src/display.c.orig 2003-12-07 21:20:41 UTC +++ src/display.c -@@ -179,6 +179,22 @@ void *display_monitor( void *input_data +@@ -179,6 +179,22 @@ void *display_monitor( void *input_data ) { return (void *)NULL; } +char *mystrndup(const char *s, size_t sz) +{ + size_t l = strlen(s), i; + char *x; + + i = l < sz ? l : sz; + + x = malloc(i + 1); + + if (x) { + memcpy(x, s, i); + x[i] = '\0'; + } + return x; +} + /* * Draw the screen, This takes into account rebuilding all the * windows in case of screen resize, or if a window changes size. -@@ -1567,7 +1583,7 @@ void draw_info( void ) { +@@ -1164,9 +1180,7 @@ void draw_now_playing( void ) { + /* Print Time Information */ + mvwprintw( win, 3, time_left, "%d:%02d", + (int)(cur_position / 60), +- (int)(cur_position % 60), +- (int)(cur_duration / 60), +- (int)(cur_duration % 60) ); ++ (int)(cur_position % 60) ); + } else { + /* Print Time Information */ + mvwprintw( win, 3, time_left, "%d:%02d/%d:%02d", +@@ -1247,7 +1261,7 @@ void draw_list( int which_window ) { + mvwaddch( win, 1, win_width - 1, ACS_RTEE ); + + /* Print Headers */ +- mvwprintw( win, 0, 2, header ); ++ mvwprintw( win, 0, 2, "%s", header ); + mvwaddstr( win, 1, col_left[0], "Artist" ); + mvwaddstr( win, 1, col_left[1], "Title" ); + mvwaddstr( win, 1, col_left[2], "Album" ); +@@ -1457,7 +1471,7 @@ void draw_help( void ) { + /* Get window size */ + getmaxyx( win, win_height, win_width ); + +- mvwprintw( win, 2, win_width - strlen(version) - 1, version ); ++ mvwprintw( win, 2, win_width - strlen(version) - 1, "%s", version ); + + /* Print Text */ + mvwaddstr( win, 0 , 2, "Quit" ); +@@ -1567,11 +1581,11 @@ void draw_info( void ) { } /* Clip filename */ - filename = strndup( filename, win_width - 2 ); + filename = mystrndup( filename, win_width - 2 ); /* Display filename and songs loaded */ mvwprintw( win, 1, 1, "Current Selected Song filename:" ); +- mvwprintw( win, 2, 1, "%s", filename ); ++ mvwprintw( win, 2, 1, "%s", filename ? filename : "" ); + mvwprintw( win, 3, 1, "Songs loaded: %d", database_info.song_count ); + + /* Free filename */ +@@ -1651,7 +1665,7 @@ void draw_meta_string( WINDOW *win, song_info_t *song, + } + + /* Print the line */ +- mvwprintw( win, top, left, line_buffer ); ++ mvwprintw( win, top, left, "%s", line_buffer ); + + /* Cleanup */ + squash_free( line_buffer ); diff --git a/audio/squash/files/patch-FIXLOCK-src_global_squash.c b/audio/squash/files/patch-src_global__squash.c similarity index 100% rename from audio/squash/files/patch-FIXLOCK-src_global_squash.c rename to audio/squash/files/patch-src_global__squash.c diff --git a/audio/squash/files/patch-src_input.c b/audio/squash/files/patch-src_input.c new file mode 100644 index 000000000000..8038f997de1e --- /dev/null +++ b/audio/squash/files/patch-src_input.c @@ -0,0 +1,11 @@ +--- src/input.c.orig 2003-12-12 17:24:36 UTC ++++ src/input.c +@@ -1477,7 +1477,7 @@ void do_edit_command( void ) { + pid = fork(); + + if( pid == 0 ) { /* the child */ +- execlp( editor, editor, filename, 0 ); ++ execlp( editor, editor, filename, NULL ); + /* be safe */ + return; + } diff --git a/audio/squash/files/patch-src_play__flac.c b/audio/squash/files/patch-src_play__flac.c index b9925d280e15..75b9c47d0237 100644 --- a/audio/squash/files/patch-src_play__flac.c +++ b/audio/squash/files/patch-src_play__flac.c @@ -1,228 +1,236 @@ --- src/play_flac.c.orig 2003-12-18 17:08:57 UTC +++ src/play_flac.c @@ -24,7 +24,7 @@ #include "database.h" /* for insert_meta_data */ #include "play_flac.h" -void flac_error_callback(const FLAC__FileDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data) { +void flac_error_callback(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data) { /* errors? we don't need no stinking errors */ return; } -@@ -36,47 +36,26 @@ void flac_error_callback(const FLAC__Fil +@@ -36,47 +36,26 @@ void *flac_open( char *filename, sound_format_t *sound */ void *flac_open( char *filename, sound_format_t *sound_format ) { flac_data_t *flac_data; - FLAC__FileDecoderState state; + FLAC__StreamDecoderInitStatus state; /* Allocate space for data */ squash_malloc( flac_data, sizeof(flac_data_t) ); - if( (flac_data->decoder = FLAC__file_decoder_new()) == NULL ) { + if( (flac_data->decoder = FLAC__stream_decoder_new()) == NULL ) { squash_free( flac_data ); return (void *)NULL; // squash_error( "Unable to create flac decoder" ); } - if( !FLAC__file_decoder_set_filename( flac_data->decoder, filename ) ) { - squash_free( flac_data ); - return (void *)NULL; - // squash_error( "Unable to set filename in decoder" ); - } - - FLAC__file_decoder_set_metadata_callback( flac_data->decoder, flac_metadata_callback_decode_frame ); - - FLAC__file_decoder_set_write_callback( flac_data->decoder, flac_write_callback_decode_frame ); - - FLAC__file_decoder_set_error_callback( flac_data->decoder, flac_error_callback ); - - FLAC__file_decoder_set_client_data( flac_data->decoder, flac_data ); - - state = FLAC__file_decoder_init( flac_data->decoder ); + state = FLAC__stream_decoder_init_file( flac_data->decoder, filename, flac_write_callback_decode_frame, flac_metadata_callback_decode_frame, flac_error_callback, flac_data ); switch( state ) { - case FLAC__FILE_DECODER_OK: + case FLAC__STREAM_DECODER_INIT_STATUS_OK: /* no problem */ break; - case FLAC__FILE_DECODER_END_OF_FILE: - case FLAC__FILE_DECODER_ERROR_OPENING_FILE: - case FLAC__FILE_DECODER_MEMORY_ALLOCATION_ERROR: - case FLAC__FILE_DECODER_SEEK_ERROR: - case FLAC__FILE_DECODER_SEEKABLE_STREAM_DECODER_ERROR: - case FLAC__FILE_DECODER_ALREADY_INITIALIZED: - case FLAC__FILE_DECODER_INVALID_CALLBACK: - case FLAC__FILE_DECODER_UNINITIALIZED: + default: squash_free( flac_data ); return (void *)NULL; - // squash_error( "Unable to initialize decoder: %s", FLAC__FileDecoderStateString[ state ] ); + // squash_error( "Unable to initialize decoder: %s", FLAC__StreamDecoderInitStatusString[ state ] ); break; } -@@ -86,7 +65,7 @@ void *flac_open( char *filename, sound_f +@@ -86,7 +65,7 @@ void *flac_open( char *filename, sound_format_t *sound flac_data->sample_rate = -1; flac_data->duration = -1; - FLAC__file_decoder_process_until_end_of_metadata( flac_data->decoder ); + FLAC__stream_decoder_process_until_end_of_metadata( flac_data->decoder ); sound_format->rate = flac_data->sample_rate; sound_format->channels = flac_data->channels; -@@ -97,12 +76,12 @@ void *flac_open( char *filename, sound_f +@@ -97,12 +76,12 @@ void *flac_open( char *filename, sound_format_t *sound return (void *)flac_data; } -FLAC__StreamDecoderWriteStatus flac_write_callback_load_meta( const FLAC__FileDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data ) { +FLAC__StreamDecoderWriteStatus flac_write_callback_load_meta( const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data ) { /* do nothing ignore any decoded frames (when just loading meta data)*/ return FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE; } -void flac_metadata_callback_load_meta( const FLAC__FileDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data ) { +void flac_metadata_callback_load_meta( const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data ) { FLAC__StreamMetadata_VorbisComment comment = metadata->data.vorbis_comment; int i; char *start, *end, *key, *value; -@@ -128,7 +107,7 @@ void flac_metadata_callback_load_meta( c +@@ -128,7 +107,7 @@ void flac_metadata_callback_load_meta( const FLAC__Fil } } -FLAC__StreamDecoderWriteStatus flac_write_callback_decode_frame( const FLAC__FileDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data ) { +FLAC__StreamDecoderWriteStatus flac_write_callback_decode_frame( const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data ) { flac_data_t *flac_data = (flac_data_t *)client_data; int i, j, k; -@@ -158,7 +137,7 @@ FLAC__StreamDecoderWriteStatus flac_writ +@@ -151,14 +130,14 @@ FLAC__StreamDecoderWriteStatus flac_write_callback_dec + for( i = 0; i < flac_data->channels; i++ ) { + int sample; + sample = buffer[i][j]; +- flac_data->buffer[k++] = sample && 0xFF; ++ flac_data->buffer[k++] = sample & 0xFF; + flac_data->buffer[k++] = sample >> 8; + } + } return FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE; } -void flac_metadata_callback_decode_frame( const FLAC__FileDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data ) { +void flac_metadata_callback_decode_frame( const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data ) { flac_data_t *flac_data = (flac_data_t *)client_data; if( metadata->type != FLAC__METADATA_TYPE_STREAMINFO ) { -@@ -172,47 +151,29 @@ void flac_metadata_callback_decode_frame +@@ -172,47 +151,29 @@ void flac_load_meta( void *data, char *filename ) { } void flac_load_meta( void *data, char *filename ) { - FLAC__FileDecoder *decoder; - FLAC__FileDecoderState state; + FLAC__StreamDecoder *decoder; + FLAC__StreamDecoderInitStatus state; - if( (decoder = FLAC__file_decoder_new()) == NULL ) { + if( (decoder = FLAC__stream_decoder_new()) == NULL ) { squash_error( "Unable to create flac decoder" ); } - if( !FLAC__file_decoder_set_filename( decoder, filename ) ) { - squash_error( "Unable to set filename in decoder" ); - } -- ++ FLAC__stream_decoder_set_metadata_respond_all( decoder ); + - FLAC__file_decoder_set_metadata_callback( decoder, flac_metadata_callback_load_meta ); - FLAC__file_decoder_set_metadata_respond_all( decoder ); - - FLAC__file_decoder_set_write_callback( decoder, flac_write_callback_load_meta ); - - FLAC__file_decoder_set_error_callback( decoder, flac_error_callback ); - - FLAC__file_decoder_set_client_data( decoder, data ); -+ FLAC__stream_decoder_set_metadata_respond_all( decoder ); - +- - state = FLAC__file_decoder_init( decoder ); + state = FLAC__stream_decoder_init_file( decoder, filename, flac_write_callback_load_meta, flac_metadata_callback_load_meta, flac_error_callback, data ); switch( state ) { - case FLAC__FILE_DECODER_OK: + case FLAC__STREAM_DECODER_INIT_STATUS_OK: /* no problem */ break; - case FLAC__FILE_DECODER_END_OF_FILE: - case FLAC__FILE_DECODER_ERROR_OPENING_FILE: - case FLAC__FILE_DECODER_MEMORY_ALLOCATION_ERROR: - case FLAC__FILE_DECODER_SEEK_ERROR: - case FLAC__FILE_DECODER_SEEKABLE_STREAM_DECODER_ERROR: - case FLAC__FILE_DECODER_ALREADY_INITIALIZED: - case FLAC__FILE_DECODER_INVALID_CALLBACK: - case FLAC__FILE_DECODER_UNINITIALIZED: - squash_error( "Unable to initialize decoder: %s", FLAC__FileDecoderStateString[ state ] ); + default: + squash_error( "Unable to initialize decoder: %s", FLAC__StreamDecoderInitStatusString[ state ] ); break; } - FLAC__file_decoder_process_until_end_of_metadata( decoder ); + FLAC__stream_decoder_process_until_end_of_metadata( decoder ); - FLAC__file_decoder_finish( decoder ); - FLAC__file_decoder_delete( decoder ); + FLAC__stream_decoder_finish( decoder ); + FLAC__stream_decoder_delete( decoder ); return; } -@@ -223,29 +184,27 @@ void flac_load_meta( void *data, char *f +@@ -223,29 +184,27 @@ frame_data_t flac_decode_frame( void *data ) { frame_data_t flac_decode_frame( void *data ) { flac_data_t *flac_data = (flac_data_t *)data; frame_data_t frame_data; - FLAC__FileDecoderState state; + FLAC__StreamDecoderState state; - FLAC__file_decoder_process_single( flac_data->decoder ); + FLAC__stream_decoder_process_single( flac_data->decoder ); frame_data.position = flac_data->position; - state = FLAC__file_decoder_get_state( flac_data->decoder ); + state = FLAC__stream_decoder_get_state( flac_data->decoder ); switch( state ) { - case FLAC__FILE_DECODER_OK: + case FLAC__STREAM_DECODER_READ_FRAME: frame_data.pcm_data = flac_data->buffer; frame_data.pcm_size = flac_data->buffer_size; break; - case FLAC__FILE_DECODER_END_OF_FILE: + case FLAC__STREAM_DECODER_END_OF_STREAM: frame_data.pcm_data = NULL; frame_data.pcm_size = 0; break; - case FLAC__FILE_DECODER_ERROR_OPENING_FILE: - case FLAC__FILE_DECODER_MEMORY_ALLOCATION_ERROR: - case FLAC__FILE_DECODER_SEEK_ERROR: - case FLAC__FILE_DECODER_SEEKABLE_STREAM_DECODER_ERROR: - case FLAC__FILE_DECODER_ALREADY_INITIALIZED: - case FLAC__FILE_DECODER_INVALID_CALLBACK: - case FLAC__FILE_DECODER_UNINITIALIZED: - squash_error("Error while decoding: %s", FLAC__FileDecoderStateString[ state ] ); + case FLAC__STREAM_DECODER_OGG_ERROR: + case FLAC__STREAM_DECODER_SEEK_ERROR: + case FLAC__STREAM_DECODER_ABORTED: + case FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR: + case FLAC__STREAM_DECODER_UNINITIALIZED: + squash_error("Error while decoding: %s", FLAC__StreamDecoderStateString[ state ] ); break; } -@@ -267,7 +226,7 @@ long flac_calc_duration( void *data ) { +@@ -267,7 +226,7 @@ void flac_seek( void *data, long seek_time, long durat void flac_seek( void *data, long seek_time, long duration ) { flac_data_t *flac_data = (flac_data_t *)data; - FLAC__file_decoder_seek_absolute( flac_data->decoder, seek_time * (flac_data->sample_rate / 1000) ); + FLAC__stream_decoder_seek_absolute( flac_data->decoder, seek_time * (flac_data->sample_rate / 1000) ); return; } -@@ -277,9 +236,9 @@ void flac_seek( void *data, long seek_ti +@@ -277,9 +236,9 @@ void flac_close( void *data ) { void flac_close( void *data ) { flac_data_t *flac_data = (flac_data_t *)data; - FLAC__file_decoder_finish( flac_data->decoder ); + FLAC__stream_decoder_finish( flac_data->decoder ); - FLAC__file_decoder_delete( flac_data->decoder ); + FLAC__stream_decoder_delete( flac_data->decoder ); /* Free allocated storage */ squash_free( flac_data->buffer );