You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/media-sound/wavsplit/files/wavsplit-1.2.1-large-files....

194 lines
6.1 KiB

--- a/Makefile 2004-11-17 23:19:17.000000000 +0100
+++ b/Makefile 2005-01-16 21:23:33.000000000 +0100
@@ -6,7 +6,7 @@
version = 1.2.1
CC = gcc
-CFLAGS += -Wall
+CFLAGS += -Wall -D_FILE_OFFSET_BITS=64
LIBS = -lm
all: wavsplit wavren
--- a/wavsplit.c 2004-11-17 23:19:17.000000000 +0100
+++ b/wavsplit.c 2005-01-16 22:04:39.000000000 +0100
@@ -269,9 +269,9 @@
timepos * split)
{
char *buf, *bp_out;
- long to_write, to_read, n_read, pos;
+ off_t to_write, to_read, n_read, pos;
int fnr = 0;
- unsigned long in_blk_size;
+ off_t in_blk_size;
struct stat stat_buf;
/* Buffer reservieren */
@@ -282,8 +282,8 @@
in_blk_size = stat_buf.st_blksize;
buf = malloc (in_blk_size + 1);
if (buf == NULL) {
- fprintf (stderr, "Could not allocate %ld bytes of memory.\n",
- in_blk_size + 1);
+ fprintf (stderr, "Could not allocate %llu bytes of memory.\n",
+ (in_blk_size + 1));
return 1;
}
/* if (verbose) printf("Allocated %ld bytes for buffer.\n", in_blk_size+1); */
@@ -295,7 +295,7 @@
return 1;
do {
- n_read = (long) stdread (buf, in_blk_size + 1);
+ n_read = stdread (buf, in_blk_size + 1);
if (n_read < 0) {
fprintf (stderr, "Error while reading.\n");
return 1;
@@ -336,7 +336,7 @@
else {
if (verbose)
printf
- ("[%02d]\tuntil the end %12ld 100.00%%\n",
+ ("[%02d]\tuntil the end %12llu 100.00%%\n",
fnr + 1, databytes);
}
}
@@ -374,7 +374,7 @@
int readheader ()
{
char ibuffer[BUFFERSIZE];
- u_long offset;
+ off_t offset;
if (lseek (ifd, 0L, SEEK_SET)) {
fprintf (stderr, "Could not locate beginning of input file\n");
@@ -425,9 +425,22 @@
ptr += 4; /* we move past data */
memcpy (&databytes, ptr, sizeof (u_long));
- offset = (u_long) ptr + 4 - (u_long) ibuffer;
+ struct stat stat_buf;
+
+ /* Buffer reservieren */
+ if (fstat (ifd, &stat_buf) < 0) {
+ fprintf (stderr, "Could not read input file state.\n");
+ return 1;
+ }
+ if(stat_buf.st_size > databytes) {
+ printf("Actual size of file (%llu) is larger than the databytes (%llu), setting to actual size: %llu!\n",
+ stat_buf.st_size, databytes + (ptr - ibuffer) + 4, stat_buf.st_size - (ptr - ibuffer) - 4 );
+ databytes = stat_buf.st_size - (ptr - ibuffer) - 4 ;
+ }
+
+ offset = ptr + 4 - ibuffer;
if (lseek (ifd, offset, SEEK_SET) == -1) {
- fprintf (stderr, "Error seeking to WAV data at %lu\n", offset);
+ fprintf (stderr, "Error seeking to WAV data at %llu\n", offset);
return 1;
}
@@ -435,7 +448,7 @@
printf ("Channels: %d\n", waveformat.wChannels);
printf ("Samplerate: %ldHz\n", waveformat.dwSamplesPerSec);
printf ("Samplebits: %d\n", waveformat.wBitsPerSample);
- printf ("Databytes: %ld\n\n", databytes);
+ printf ("Databytes: %llu\n\n", databytes);
printf ("Split Hours Mins Seconds Bytes %%\n");
//printf("Blocks: %ld\n",databytes/waveformat.wBlockAlign);
}
@@ -473,7 +486,7 @@
return NULL;
}
-int createout (int num, long datasize)
+int createout (int num, off_t datasize)
{
char ofile[MAX_PATH + 1];
sprintf (ofile, "%s/%02d.wav", basename, num);
@@ -517,7 +530,7 @@
TimeFloat = hr* 3600.0 + min * 60.0 + sek + (frames/fps);
*/
-long calcsplit (unsigned int UseHours, unsigned int UseFrames,
+off_t calcsplit (unsigned int UseHours, unsigned int UseFrames,
unsigned int fps, unsigned int UseTrackLens,
int splitnr, timepos * split)
{
@@ -526,7 +539,7 @@
double TimeFloat = 0.0;
double SplitTimeFloat = 0.0;
- long pos;
+ off_t pos;
unsigned int Opt = 2 * UseHours + UseFrames;
switch (Opt) {
@@ -569,7 +582,7 @@
/* first calculate to the nearest sample, then scale by the */
/* block size to avoid getting e.g. half a block */
- pos = (long) ((SplitTimeFloat * (double) waveformat.dwSamplesPerSec));
+ pos = (off_t) ((SplitTimeFloat * (double) waveformat.dwSamplesPerSec));
pos = pos * waveformat.wBlockAlign;
if (verbose) {
@@ -581,24 +594,24 @@
}
}
if (UseFrames)
- printf ("%5d %8.3f %12ld %3.2f%%\n",
+ printf ("%5d %8.3f %12llu %3.2f%%\n",
split[splitnr].min,
(double) split[splitnr].seki +
((double) split[splitnr].frames / (double) fps), pos,
(float) pos / (float) databytes * 100);
else
- printf ("%5d %8.3f %12ld %3.2f%%\n",
+ printf ("%5d %8.3f %12llu %3.2f%%\n",
split[splitnr].min,
split[splitnr].sek, pos, (float) pos / (float) databytes * 100);
return pos;
}
-long stdread (char *buf, long nchars)
+off_t stdread (char *buf, off_t nchars)
{
- int n_read;
- int to_be_read = nchars;
+ off_t n_read;
+ off_t to_be_read = nchars;
while (to_be_read) {
n_read = read (ifd, buf, to_be_read);
--- a/wavsplit.h 2004-11-17 23:19:17.000000000 +0100
+++ b/wavsplit.h 2005-01-16 21:23:33.000000000 +0100
@@ -121,15 +121,15 @@
static int split (unsigned int UseHours, unsigned int UseFrames,
unsigned int fps, unsigned int UseTrackLens,
int splits, timepos * splitpos);
-static long calcsplit (unsigned int UseHours, unsigned int UseFrames,
+static off_t calcsplit (unsigned int UseHours, unsigned int UseFrames,
unsigned int fps, unsigned int UseTrackLens,
int splitnr, timepos * split);
-static int createout ();
+static int createout (int num, off_t datasize);
int closeout ();
void display (unsigned char avgleft, unsigned char avgright,
unsigned char avgloud);
static void usage ();
-static long stdread (char *buf, long nchars);
+static off_t stdread (char *buf, off_t nchars);
#ifdef __powerpc__
static _ConvertHeaderFromNative (WAVE_HEADER * hdr);
static _ConvertHeaderToNative (WAVE_HEADER * hdr);
@@ -137,7 +137,7 @@
static char *ptr;
static WAVEFORMAT waveformat;
-static u_long databytes, b;
+static off_t databytes, b;
static int ifd, ofd;
static int verbose;
static char basename[MAX_PATH + 1], ifile[MAX_PATH + 1];