Index: head/audio/wavegain/Makefile =================================================================== --- head/audio/wavegain/Makefile (revision 549995) +++ head/audio/wavegain/Makefile (revision 549996) @@ -1,32 +1,34 @@ # Created by: Denise H. G. # $FreeBSD$ PORTNAME= wavegain PORTVERSION= 1.2.8 +PORTREVISION= 1 CATEGORIES= audio MASTER_SITES= http://www.rarewares.org/files/others/ DISTNAME= ${PORTNAME}-${PORTVERSION}srcs${EXTRACT_SUFFIX} MAINTAINER= darcsis@gmail.com COMMENT= Program that applies ReplayGain to wave files +LICENSE= LGPL21 + LIB_DEPENDS= libsndfile.so:audio/libsndfile ONLY_FOR_ARCHS= i386 amd64 ONLY_FOR_ARCHS_REASON= uses x86 assembly USES= gmake dos2unix zip -DOS2UNIX_FILES= audio.c wavegain.c PLIST_FILES= bin/wavegain WRKSRC= ${WRKDIR}/WaveGain-${PORTVERSION} do-build: @cd ${WRKSRC} && ${CC} ${CFLAGS} *.c -o ${PORTNAME} \ -DHAVE_CONFIG_H -lm -lsndfile -L${LOCALBASE}/lib do-install: ${INSTALL_PROGRAM} ${WRKSRC}/${PORTNAME} ${STAGEDIR}${PREFIX}/bin .include Index: head/audio/wavegain/files/patch-audio.c =================================================================== --- head/audio/wavegain/files/patch-audio.c (revision 549995) +++ head/audio/wavegain/files/patch-audio.c (revision 549996) @@ -1,23 +1,32 @@ ---- audio.c.orig 2016-07-26 16:16:05 UTC +--- audio.c.orig 2020-09-25 07:48:54 UTC +++ audio.c @@ -32,20 +32,8 @@ #include #include -#ifdef _WIN32 -#include -#else -# ifndef __MACOSX__ -# include -# endif -#endif - #include -#ifndef __MACOSX__ -#include -#endif - #include "config.h" #include "audio.h" #include "i18n.h" +@@ -642,7 +630,7 @@ int wav_open(FILE *in, wavegain_opt *opt, unsigned cha + if (!find_gain_chunk(in, &len)) + FSEEK64(in, current_pos, SEEK_SET); + else { +- char buf_double[8]; ++ unsigned char buf_double[8]; + opt->gain_chunk = 1; + fread(buf_double, 1, 8, in); + opt->gain_scale = READ_D64(buf_double); Index: head/audio/wavegain/files/patch-audio.h =================================================================== --- head/audio/wavegain/files/patch-audio.h (nonexistent) +++ head/audio/wavegain/files/patch-audio.h (revision 549996) @@ -0,0 +1,11 @@ +--- audio.h.orig 2008-11-11 11:29:08 UTC ++++ audio.h +@@ -118,7 +118,7 @@ void raw_close(void *); + long wav_read(void *, double **buffer, int samples, int fast, int chunk); + long wav_ieee_read(void *, double **buffer, int samples, int fast, int chunk); + +-enum { ++typedef enum { + WAV_NO_FMT = 0, + WAV_FMT_8BIT, + WAV_FMT_16BIT, Property changes on: head/audio/wavegain/files/patch-audio.h ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/audio/wavegain/files/patch-main.c =================================================================== --- head/audio/wavegain/files/patch-main.c (nonexistent) +++ head/audio/wavegain/files/patch-main.c (revision 549996) @@ -0,0 +1,44 @@ +--- main.c.orig 2008-08-08 08:48:38 UTC ++++ main.c +@@ -178,7 +178,7 @@ int process_files(FILE_LIST* file_list, SETTINGS* sett + /* Undo previously applied gain */ + if (settings->undo) { + for (file = file_list; file; file = file->next_file) { +- if (file->filename == '\0') ++ if (file->filename == NULL) + continue; + if (!write_gains(file->filename, 0, 0, 0, 0, 0, settings)) { + fprintf(stderr, " Error processing GAIN for file - %s\n", file->filename); +@@ -191,12 +191,12 @@ int process_files(FILE_LIST* file_list, SETTINGS* sett + for (file = file_list; file; file = file->next_file) { + int dc_l; + int dc_r; +- if (file->filename == '\0') ++ if (file->filename == NULL) + continue; + + if (!get_gain(file->filename, &file->track_peak, &file->track_gain, + file->dc_offset, file->offset, settings)) { +- file->filename = '\0'; ++ file->filename = NULL; + continue; + } + dc_l = (int)(file->dc_offset[0] * 32768 * -1); +@@ -262,7 +262,7 @@ int process_files(FILE_LIST* file_list, SETTINGS* sett + if(settings->apply_gain) { /* Write radio and audiophile gains. */ + total_files = 0.0; + for (file = file_list; file; file = file->next_file) { +- if (file->filename == '\0') ++ if (file->filename == NULL) + continue; + if (settings->audiophile && settings->set_album_gain == 1) + break; +@@ -297,7 +297,7 @@ int process_files(FILE_LIST* file_list, SETTINGS* sett + SetEnvironmentVariable("ALBUM_PEAK", ftos(settings->album_peak, "%.0lf")); + + for (file = file_list; file; file = file->next_file) { +- if (file->filename == '\0') ++ if (file->filename[0] == NULL) + continue; + + if (dir[0] == '.' && dir[1] == '\\') dir += 2; Property changes on: head/audio/wavegain/files/patch-main.c ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/audio/wavegain/files/patch-misc.c =================================================================== --- head/audio/wavegain/files/patch-misc.c (nonexistent) +++ head/audio/wavegain/files/patch-misc.c (revision 549996) @@ -0,0 +1,12 @@ +--- misc.c.orig 2006-06-04 21:47:38 UTC ++++ misc.c +@@ -39,8 +39,7 @@ void file_error(const char* message, ...) + vfprintf(stderr, message, args); + va_end(args); + +- fprintf(stderr, strerror(err_num)); +- fprintf(stderr, "\n"); ++ fprintf(stderr, "%s\n", strerror(err_num)); + } + + Property changes on: head/audio/wavegain/files/patch-misc.c ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/audio/wavegain/files/patch-wavegain.c =================================================================== --- head/audio/wavegain/files/patch-wavegain.c (revision 549995) +++ head/audio/wavegain/files/patch-wavegain.c (revision 549996) @@ -1,111 +1,120 @@ ---- wavegain.c.orig 2016-07-26 16:16:05 UTC +--- wavegain.c.orig 2020-09-25 07:55:21 UTC +++ wavegain.c @@ -19,20 +19,8 @@ #include #include -#ifdef _WIN32 -#include -#else -# ifndef __MACOSX__ -# include -# endif -#endif - #include -#ifndef __MACOSX__ -#include -#endif - #include "gain_analysis.h" #include "i18n.h" #include "getopt.h" -@@ -57,6 +45,9 @@ +@@ -44,6 +32,8 @@ + + #ifdef _WIN32 + #include ++#else ++#include + #endif + + #ifdef ENABLE_RECURSIVE +@@ -57,6 +47,9 @@ #define ROUND64(x) ( doubletmp = (x) + Dither.Add + (Int64_t)0x001FFFFD80000000L, *(Int64_t*)(&doubletmp) - (Int64_t)0x433FFFFD80000000L ) #endif +#include +static int xrename(const char *oldpath, const char *newpath); + extern int write_to_log; dither_t Dither; double doubletmp; -@@ -639,7 +630,14 @@ int write_gains(const char *filename, do +@@ -639,7 +632,14 @@ int write_gains(const char *filename, double radio_gai goto exit; } - if (rename(TEMP_NAME, filename) != 0) { + /* + * int rename(const char *old, const char *new); + * In POSIX, rename will fail if the 'old' and 'new' names are on different mounted file systems. + * ( From http://en.wikipedia.org/wiki/Rename_%28C%29 ) + * Function 'xrename' from 'normalize-0.7.6' is one clever solution + */ + /*if (rename(TEMP_NAME, filename) != 0) {*/ + if (xrename(TEMP_NAME, filename) != 0) { fprintf(stderr, " Error renaming '" TEMP_NAME "' to '%s' (uh-oh)\n", filename); goto exit; } -@@ -650,4 +648,61 @@ exit: +@@ -650,4 +650,61 @@ exit: return result; } +/* From normalize-0.7.6/nid3lib/write.c + * Move the file "oldpath" to "newpath", or copy and delete if they + * are on different filesystems. +*/ +static int +xrename(const char *oldpath, const char *newpath) +{ + FILE *in, *out; + char buf[4096]; + size_t sz; -+ + + if (strcmp(oldpath, newpath) == 0) + return 0; - ++ +#ifdef __EMX__ + if (unlink(newpath) == -1 && errno != ENOENT) + return -1; +#endif + + if (rename(oldpath, newpath) == -1) { + if (errno == EXDEV) { + /* files are on different filesystems, so we have to copy */ + if (unlink(newpath) == -1 && errno != ENOENT) + return -1; + + in = fopen(oldpath, "rb"); + if (in == NULL) + return -1; + out = fopen(newpath, "wb"); + if (out == NULL) { + fclose(in); + return -1; + } + + while ((sz = fread(buf, 1, 4096, in)) > 0) + fwrite(buf, 1, sz, out); + + if (ferror(in) || ferror(out)) { + fclose(in); + fclose(out); + return -1; + } + if (fclose(in) == EOF) { + fclose(out); + return -1; + } + if (fclose(out) == EOF) + return -1; + + if (unlink(oldpath) == -1) + return -1; + } else { + return -1; + } + } + + return 0; +}