[asterisk-commits] trunk r10579 - in /trunk: ./ formats/ include/asterisk/

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Mon Feb 20 16:35:17 MST 2006


Author: tilghman
Date: Mon Feb 20 17:35:12 2006
New Revision: 10579

URL: http://svn.digium.com/view/asterisk?rev=10579&view=rev
Log:
Bug 5984 - Convert file offsets to 64 bit

Modified:
    trunk/Makefile
    trunk/file.c
    trunk/formats/format_au.c
    trunk/formats/format_g723.c
    trunk/formats/format_g726.c
    trunk/formats/format_g729.c
    trunk/formats/format_gsm.c
    trunk/formats/format_h263.c
    trunk/formats/format_ilbc.c
    trunk/formats/format_ogg_vorbis.c
    trunk/formats/format_pcm.c
    trunk/formats/format_pcm_alaw.c
    trunk/formats/format_sln.c
    trunk/formats/format_vox.c
    trunk/formats/format_wav.c
    trunk/formats/format_wav_gsm.c
    trunk/include/asterisk/file.h

Modified: trunk/Makefile
URL: http://svn.digium.com/view/asterisk/trunk/Makefile?rev=10579&r1=10578&r2=10579&view=diff
==============================================================================
--- trunk/Makefile (original)
+++ trunk/Makefile Mon Feb 20 17:35:12 2006
@@ -146,6 +146,9 @@
 endif
 
 ASTCFLAGS=
+
+# Define this to use files larger than 2GB (useful for sound files longer than 37 hours and logfiles)
+ASTCFLAGS+=-D_FILE_OFFSET_BITS=64
 
 # Pentium Pro Optimize
 #PROC=i686

Modified: trunk/file.c
URL: http://svn.digium.com/view/asterisk/trunk/file.c?rev=10579&r1=10578&r2=10579&view=diff
==============================================================================
--- trunk/file.c (original)
+++ trunk/file.c Mon Feb 20 17:35:12 2006
@@ -67,11 +67,11 @@
 	/*! Write a frame to a channel */
 	int (*write)(struct ast_filestream *, struct ast_frame *);
 	/*! seek num samples into file, whence(think normal seek) */
-	int (*seek)(struct ast_filestream *, long offset, int whence);
+	int (*seek)(struct ast_filestream *, off_t offset, int whence);
 	/*! trunc file to current position */
 	int (*trunc)(struct ast_filestream *fs);
 	/*! tell current position */
-	long (*tell)(struct ast_filestream *fs);
+	off_t (*tell)(struct ast_filestream *fs);
 	/*! Read the next frame from the filestream (if available) and report when to get next one
 		(in samples) */
 	struct ast_frame * (*read)(struct ast_filestream *, int *whennext);
@@ -106,9 +106,9 @@
 						struct ast_filestream * (*open)(FILE *f),
 						struct ast_filestream * (*rewrite)(FILE *f, const char *comment),
 						int (*write)(struct ast_filestream *, struct ast_frame *),
-						int (*seek)(struct ast_filestream *, long sample_offset, int whence),
+						int (*seek)(struct ast_filestream *, off_t sample_offset, int whence),
 						int (*trunc)(struct ast_filestream *),
-						long (*tell)(struct ast_filestream *),
+						off_t (*tell)(struct ast_filestream *),
 						struct ast_frame * (*read)(struct ast_filestream *, int *whennext),
 						void (*close)(struct ast_filestream *),
 						char * (*getcomment)(struct ast_filestream *))
@@ -647,7 +647,7 @@
 	return 0;
 }
 
-int ast_seekstream(struct ast_filestream *fs, long sample_offset, int whence)
+int ast_seekstream(struct ast_filestream *fs, off_t sample_offset, int whence)
 {
 	return fs->fmt->seek(fs, sample_offset, whence);
 }
@@ -657,22 +657,22 @@
 	return fs->fmt->trunc(fs);
 }
 
-long ast_tellstream(struct ast_filestream *fs)
+off_t ast_tellstream(struct ast_filestream *fs)
 {
 	return fs->fmt->tell(fs);
 }
 
-int ast_stream_fastforward(struct ast_filestream *fs, long ms)
+int ast_stream_fastforward(struct ast_filestream *fs, off_t ms)
 {
 	/* I think this is right, 8000 samples per second, 1000 ms a second so 8
 	 * samples per ms  */
-	long samples = ms * 8;
+	off_t samples = ms * 8;
 	return ast_seekstream(fs, samples, SEEK_CUR);
 }
 
-int ast_stream_rewind(struct ast_filestream *fs, long ms)
-{
-	long samples = ms * 8;
+int ast_stream_rewind(struct ast_filestream *fs, off_t ms)
+{
+	off_t samples = ms * 8;
 	samples = samples * -1;
 	return ast_seekstream(fs, samples, SEEK_CUR);
 }

Modified: trunk/formats/format_au.c
URL: http://svn.digium.com/view/asterisk/trunk/formats/format_au.c?rev=10579&r1=10578&r2=10579&view=diff
==============================================================================
--- trunk/formats/format_au.c (original)
+++ trunk/formats/format_au.c Mon Feb 20 17:35:12 2006
@@ -107,7 +107,7 @@
 	AU_HEADER(header);
 	u_int32_t magic;
 	u_int32_t hdr_size;
-	u_int32_t data_size;
+	off_t data_size;
 	u_int32_t encoding;
 	u_int32_t sample_rate;
 	u_int32_t channels;
@@ -141,7 +141,7 @@
 	}
 	/* Skip to data */
 	fseek(f, 0, SEEK_END);
-	data_size = ftell(f) - hdr_size;
+	data_size = ftello(f) - hdr_size;
 	if (fseek(f, hdr_size, SEEK_SET) == -1 ) {
 		ast_log(LOG_WARNING, "Failed to skip to data: %d\n", hdr_size);
 		return -1;
@@ -155,9 +155,9 @@
 	u_int32_t datalen;
 	int bytes;
 
-	cur = ftell(f);
+	cur = ftello(f);
 	fseek(f, 0, SEEK_END);
-	end = ftell(f);
+	end = ftello(f);
 	/* data starts 24 bytes in */
 	bytes = end - AU_HEADER_SIZE;
 	datalen = htoll(bytes);
@@ -315,16 +315,16 @@
 	return 0;
 }
 
-static int au_seek(struct ast_filestream *fs, long sample_offset, int whence)
+static int au_seek(struct ast_filestream *fs, off_t sample_offset, int whence)
 {
 	off_t min, max, cur;
-	long offset = 0, samples;
+	unsigned long offset = 0, samples;
 	
 	samples = sample_offset;
 	min = AU_HEADER_SIZE;
-	cur = ftell(fs->f);
+	cur = ftello(fs->f);
 	fseek(fs->f, 0, SEEK_END);
-	max = ftell(fs->f);
+	max = ftello(fs->f);
 	if (whence == SEEK_SET)
 		offset = samples + min;
 	else if (whence == SEEK_CUR || whence == SEEK_FORCECUR)
@@ -341,16 +341,16 @@
 
 static int au_trunc(struct ast_filestream *fs)
 {
-	if (ftruncate(fileno(fs->f), ftell(fs->f)))
+	if (ftruncate(fileno(fs->f), ftello(fs->f)))
 		return -1;
 	return update_header(fs->f);
 }
 
-static long au_tell(struct ast_filestream *fs)
+static off_t au_tell(struct ast_filestream *fs)
 {
 	off_t offset;
 
-	offset = ftell(fs->f);
+	offset = ftello(fs->f);
 	return offset - AU_HEADER_SIZE;
 }
 

Modified: trunk/formats/format_g723.c
URL: http://svn.digium.com/view/asterisk/trunk/formats/format_g723.c?rev=10579&r1=10578&r2=10579&view=diff
==============================================================================
--- trunk/formats/format_g723.c (original)
+++ trunk/formats/format_g723.c Mon Feb 20 17:35:12 2006
@@ -214,7 +214,7 @@
 	return 0;
 }
 
-static int g723_seek(struct ast_filestream *fs, long sample_offset, int whence)
+static int g723_seek(struct ast_filestream *fs, off_t sample_offset, int whence)
 {
 	return -1;
 }
@@ -222,12 +222,12 @@
 static int g723_trunc(struct ast_filestream *fs)
 {
 	/* Truncate file to current length */
-	if (ftruncate(fileno(fs->f), ftell(fs->f)) < 0)
+	if (ftruncate(fileno(fs->f), ftello(fs->f)) < 0)
 		return -1;
 	return 0;
 }
 
-static long g723_tell(struct ast_filestream *fs)
+static off_t g723_tell(struct ast_filestream *fs)
 {
 	return -1;
 }

Modified: trunk/formats/format_g726.c
URL: http://svn.digium.com/view/asterisk/trunk/formats/format_g726.c?rev=10579&r1=10578&r2=10579&view=diff
==============================================================================
--- trunk/formats/format_g726.c (original)
+++ trunk/formats/format_g726.c Mon Feb 20 17:35:12 2006
@@ -391,7 +391,7 @@
 	return NULL;
 }
 
-static int g726_seek(struct ast_filestream *fs, long sample_offset, int whence)
+static int g726_seek(struct ast_filestream *fs, off_t sample_offset, int whence)
 {
 	return -1;
 }
@@ -401,7 +401,7 @@
 	return -1;
 }
 
-static long g726_tell(struct ast_filestream *fs)
+static off_t g726_tell(struct ast_filestream *fs)
 {
 	return -1;
 }

Modified: trunk/formats/format_g729.c
URL: http://svn.digium.com/view/asterisk/trunk/formats/format_g729.c?rev=10579&r1=10578&r2=10579&view=diff
==============================================================================
--- trunk/formats/format_g729.c (original)
+++ trunk/formats/format_g729.c Mon Feb 20 17:35:12 2006
@@ -181,14 +181,14 @@
 	return NULL;
 }
 
-static int g729_seek(struct ast_filestream *fs, long sample_offset, int whence)
+static int g729_seek(struct ast_filestream *fs, off_t sample_offset, int whence)
 {
 	long bytes;
 	off_t min,cur,max,offset=0;
 	min = 0;
-	cur = ftell(fs->f);
-	fseek(fs->f, 0, SEEK_END);
-	max = ftell(fs->f);
+	cur = ftello(fs->f);
+	fseeko(fs->f, 0, SEEK_END);
+	max = ftello(fs->f);
 	
 	bytes = 20 * (sample_offset / 160);
 	if (whence == SEEK_SET)
@@ -202,7 +202,7 @@
 	}
 	/* protect against seeking beyond begining. */
 	offset = (offset < min)?min:offset;
-	if (fseek(fs->f, offset, SEEK_SET) < 0)
+	if (fseeko(fs->f, offset, SEEK_SET) < 0)
 		return -1;
 	return 0;
 }
@@ -210,15 +210,15 @@
 static int g729_trunc(struct ast_filestream *fs)
 {
 	/* Truncate file to current length */
-	if (ftruncate(fileno(fs->f), ftell(fs->f)) < 0)
+	if (ftruncate(fileno(fs->f), ftello(fs->f)) < 0)
 		return -1;
 	return 0;
 }
 
-static long g729_tell(struct ast_filestream *fs)
+static off_t g729_tell(struct ast_filestream *fs)
 {
 	off_t offset;
-	offset = ftell(fs->f);
+	offset = ftello(fs->f);
 	return (offset/20)*160;
 }
 

Modified: trunk/formats/format_gsm.c
URL: http://svn.digium.com/view/asterisk/trunk/formats/format_gsm.c?rev=10579&r1=10578&r2=10579&view=diff
==============================================================================
--- trunk/formats/format_gsm.c (original)
+++ trunk/formats/format_gsm.c Mon Feb 20 17:35:12 2006
@@ -195,14 +195,14 @@
 	return 0;
 }
 
-static int gsm_seek(struct ast_filestream *fs, long sample_offset, int whence)
+static int gsm_seek(struct ast_filestream *fs, off_t sample_offset, int whence)
 {
 	off_t offset=0,min,cur,max,distance;
 	
 	min = 0;
-	cur = ftell(fs->f);
-	fseek(fs->f, 0, SEEK_END);
-	max = ftell(fs->f);
+	cur = ftello(fs->f);
+	fseeko(fs->f, 0, SEEK_END);
+	max = ftello(fs->f);
 	/* have to fudge to frame here, so not fully to sample */
 	distance = (sample_offset/160) * 33;
 	if(whence == SEEK_SET)
@@ -217,23 +217,23 @@
 		offset = (offset > max)?max:offset;
 	} else if (offset > max) {
 		int i;
-		fseek(fs->f, 0, SEEK_END);
+		fseeko(fs->f, 0, SEEK_END);
 		for (i=0; i< (offset - max) / 33; i++) {
 			fwrite(gsm_silence, 1, 33, fs->f);
 		}
 	}
-	return fseek(fs->f, offset, SEEK_SET);
+	return fseeko(fs->f, offset, SEEK_SET);
 }
 
 static int gsm_trunc(struct ast_filestream *fs)
 {
-	return ftruncate(fileno(fs->f), ftell(fs->f));
-}
-
-static long gsm_tell(struct ast_filestream *fs)
+	return ftruncate(fileno(fs->f), ftello(fs->f));
+}
+
+static off_t gsm_tell(struct ast_filestream *fs)
 {
 	off_t offset;
-	offset = ftell(fs->f);
+	offset = ftello(fs->f);
 	return (offset/33)*160;
 }
 

Modified: trunk/formats/format_h263.c
URL: http://svn.digium.com/view/asterisk/trunk/formats/format_h263.c?rev=10579&r1=10578&r2=10579&view=diff
==============================================================================
--- trunk/formats/format_h263.c (original)
+++ trunk/formats/format_h263.c Mon Feb 20 17:35:12 2006
@@ -221,7 +221,7 @@
 	return NULL;
 }
 
-static int h263_seek(struct ast_filestream *fs, long sample_offset, int whence)
+static int h263_seek(struct ast_filestream *fs, off_t sample_offset, int whence)
 {
 	/* No way Jose */
 	return -1;
@@ -230,16 +230,16 @@
 static int h263_trunc(struct ast_filestream *fs)
 {
 	/* Truncate file to current length */
-	if (ftruncate(fileno(fs->f), ftell(fs->f)) < 0)
+	if (ftruncate(fileno(fs->f), ftello(fs->f)) < 0)
 		return -1;
 	return 0;
 }
 
-static long h263_tell(struct ast_filestream *fs)
+static off_t h263_tell(struct ast_filestream *fs)
 {
 	/* XXX This is totally bogus XXX */
 	off_t offset;
-	offset = ftell(fs->f);
+	offset = ftello(fs->f);
 	return (offset/20)*160;
 }
 

Modified: trunk/formats/format_ilbc.c
URL: http://svn.digium.com/view/asterisk/trunk/formats/format_ilbc.c?rev=10579&r1=10578&r2=10579&view=diff
==============================================================================
--- trunk/formats/format_ilbc.c (original)
+++ trunk/formats/format_ilbc.c Mon Feb 20 17:35:12 2006
@@ -180,14 +180,14 @@
 	return NULL;
 }
 
-static int ilbc_seek(struct ast_filestream *fs, long sample_offset, int whence)
+static int ilbc_seek(struct ast_filestream *fs, off_t sample_offset, int whence)
 {
 	long bytes;
 	off_t min,cur,max,offset=0;
 	min = 0;
-	cur = ftell(fs->f);
-	fseek(fs->f, 0, SEEK_END);
-	max = ftell(fs->f);
+	cur = ftello(fs->f);
+	fseeko(fs->f, 0, SEEK_END);
+	max = ftello(fs->f);
 	
 	bytes = 50 * (sample_offset / 240);
 	if (whence == SEEK_SET)
@@ -201,7 +201,7 @@
 	}
 	/* protect against seeking beyond begining. */
 	offset = (offset < min)?min:offset;
-	if (fseek(fs->f, offset, SEEK_SET) < 0)
+	if (fseeko(fs->f, offset, SEEK_SET) < 0)
 		return -1;
 	return 0;
 }
@@ -209,15 +209,15 @@
 static int ilbc_trunc(struct ast_filestream *fs)
 {
 	/* Truncate file to current length */
-	if (ftruncate(fileno(fs->f), ftell(fs->f)) < 0)
+	if (ftruncate(fileno(fs->f), ftello(fs->f)) < 0)
 		return -1;
 	return 0;
 }
 
-static long ilbc_tell(struct ast_filestream *fs)
+static off_t ilbc_tell(struct ast_filestream *fs)
 {
 	off_t offset;
-	offset = ftell(fs->f);
+	offset = ftello(fs->f);
 	return (offset/50)*240;
 }
 

Modified: trunk/formats/format_ogg_vorbis.c
URL: http://svn.digium.com/view/asterisk/trunk/formats/format_ogg_vorbis.c?rev=10579&r1=10578&r2=10579&view=diff
==============================================================================
--- trunk/formats/format_ogg_vorbis.c (original)
+++ trunk/formats/format_ogg_vorbis.c Mon Feb 20 17:35:12 2006
@@ -626,14 +626,12 @@
  * \return 0 on success, -1 on failure.
  */
 
-static int ogg_vorbis_seek(struct ast_filestream *s, long sample_offset,
-			   int whence)
-{
+static int ogg_vorbis_seek(struct ast_filestream *s, off_t sample_offset, int whence) {
 	ast_log(LOG_WARNING, "Seeking is not supported on OGG/Vorbis streams!\n");
 	return -1;
 }
 
-static long ogg_vorbis_tell(struct ast_filestream *s)
+static off_t ogg_vorbis_tell(struct ast_filestream *s)
 {
 	ast_log(LOG_WARNING, "Telling is not supported on OGG/Vorbis streams!\n");
 	return -1;

Modified: trunk/formats/format_pcm.c
URL: http://svn.digium.com/view/asterisk/trunk/formats/format_pcm.c?rev=10579&r1=10578&r2=10579&view=diff
==============================================================================
--- trunk/formats/format_pcm.c (original)
+++ trunk/formats/format_pcm.c Mon Feb 20 17:35:12 2006
@@ -174,14 +174,14 @@
 	return 0;
 }
 
-static int pcm_seek(struct ast_filestream *fs, long sample_offset, int whence)
-{
-	long cur, max, offset = 0;
+static int pcm_seek(struct ast_filestream *fs, off_t sample_offset, int whence)
+{
+	off_t cur, max, offset = 0;
  	int ret = -1;	/* assume error */
 
-	cur = ftell(fs->f);
-	fseek(fs->f, 0, SEEK_END);
-	max = ftell(fs->f);
+	cur = ftello(fs->f);
+	fseeko(fs->f, 0, SEEK_END);
+	max = ftello(fs->f);
 
 	switch (whence) {
 	case SEEK_SET:
@@ -218,20 +218,20 @@
 			ast_log(LOG_WARNING, "offset too large %ld, truncating to %ld\n", offset, max);
 			offset = max;
 		}
-		ret = fseek(fs->f, offset, SEEK_SET);
+		ret = fseeko(fs->f, offset, SEEK_SET);
 	}
 	return ret;
 }
 
 static int pcm_trunc(struct ast_filestream *fs)
 {
-	return ftruncate(fileno(fs->f), ftell(fs->f));
-}
-
-static long pcm_tell(struct ast_filestream *fs)
+	return ftruncate(fileno(fs->f), ftello(fs->f));
+}
+
+static off_t pcm_tell(struct ast_filestream *fs)
 {
 	off_t offset;
-	offset = ftell(fs->f);
+	offset = ftello(fs->f);
 	return offset;
 }
 

Modified: trunk/formats/format_pcm_alaw.c
URL: http://svn.digium.com/view/asterisk/trunk/formats/format_pcm_alaw.c?rev=10579&r1=10578&r2=10579&view=diff
==============================================================================
--- trunk/formats/format_pcm_alaw.c (original)
+++ trunk/formats/format_pcm_alaw.c Mon Feb 20 17:35:12 2006
@@ -220,7 +220,7 @@
 		unsigned long cur, to_write;
 
 		cur = stat_buf.st_size;
-		if (fseek(fs->f, cur, SEEK_SET) < 0) {
+		if (fseeko(fs->f, cur, SEEK_SET) < 0) {
 			ast_log( LOG_WARNING, "Cannot seek in file: %s\n", strerror(errno) );
 			return -1;
 		}
@@ -236,7 +236,7 @@
 	}
 
 
-	if (fseek(s->f, fpos, SEEK_SET) < 0) {
+	if (fseeko(s->f, fpos, SEEK_SET) < 0) {
 		ast_log( LOG_WARNING, "Cannot seek in file: %s\n", strerror(errno) );
 		return -1;
 	}
@@ -249,14 +249,14 @@
 	return 0;
 }
 
-static int pcm_seek(struct ast_filestream *fs, long sample_offset, int whence)
-{
-	long cur, max, offset = 0;
+static int pcm_seek(struct ast_filestream *fs, off_t sample_offset, int whence)
+{
+	off_t cur, max, offset = 0;
  	int ret = -1; /* assume error */
 
-	cur = ftell(fs->f);
-	fseek(fs->f, 0, SEEK_END);
-	max = ftell(fs->f);
+	cur = ftello(fs->f);
+	fseeko(fs->f, 0, SEEK_END);
+	max = ftello(fs->f);
 
 	switch (whence) {
 	case SEEK_SET:
@@ -290,24 +290,24 @@
 		}
 		ret = 0; /* success */
 	} else {
-                if (offset > max) {
-                        ast_log(LOG_WARNING, "offset too large %ld, truncating to %ld\n", offset, max);
-                        offset = max;
-		}
-                ret = fseek(fs->f, offset, SEEK_SET);
+		if (offset > max) {
+			ast_log(LOG_WARNING, "offset too large %ld, truncating to %ld\n", offset, max);
+			offset = max;
+		}
+		ret = fseeko(fs->f, offset, SEEK_SET);
 	}
 	return ret;
 }
 
 static int pcm_trunc(struct ast_filestream *fs)
 {
-	return ftruncate(fileno(fs->f), ftell(fs->f));
-}
-
-static long pcm_tell(struct ast_filestream *fs)
+	return ftruncate(fileno(fs->f), ftello(fs->f));
+}
+
+static off_t pcm_tell(struct ast_filestream *fs)
 {
 	off_t offset;
-	offset = ftell(fs->f);
+	offset = ftello(fs->f);
 	return offset;
 }
 

Modified: trunk/formats/format_sln.c
URL: http://svn.digium.com/view/asterisk/trunk/formats/format_sln.c?rev=10579&r1=10578&r2=10579&view=diff
==============================================================================
--- trunk/formats/format_sln.c (original)
+++ trunk/formats/format_sln.c Mon Feb 20 17:35:12 2006
@@ -169,15 +169,15 @@
 	return 0;
 }
 
-static int slinear_seek(struct ast_filestream *fs, long sample_offset, int whence)
+static int slinear_seek(struct ast_filestream *fs, off_t sample_offset, int whence)
 {
 	off_t offset=0,min,cur,max;
 
 	min = 0;
 	sample_offset <<= 1;
-	cur = ftell(fs->f);
-	fseek(fs->f, 0, SEEK_END);
-	max = ftell(fs->f);
+	cur = ftello(fs->f);
+	fseeko(fs->f, 0, SEEK_END);
+	max = ftello(fs->f);
 	if (whence == SEEK_SET)
 		offset = sample_offset;
 	else if (whence == SEEK_CUR || whence == SEEK_FORCECUR)
@@ -189,18 +189,18 @@
 	}
 	/* always protect against seeking past begining. */
 	offset = (offset < min)?min:offset;
-	return fseek(fs->f, offset, SEEK_SET);
+	return fseeko(fs->f, offset, SEEK_SET);
 }
 
 static int slinear_trunc(struct ast_filestream *fs)
 {
-	return ftruncate(fileno(fs->f), ftell(fs->f));
-}
-
-static long slinear_tell(struct ast_filestream *fs)
+	return ftruncate(fileno(fs->f), ftello(fs->f));
+}
+
+static off_t slinear_tell(struct ast_filestream *fs)
 {
 	off_t offset;
-	offset = ftell(fs->f);
+	offset = ftello(fs->f);
 	return offset / 2;
 }
 

Modified: trunk/formats/format_vox.c
URL: http://svn.digium.com/view/asterisk/trunk/formats/format_vox.c?rev=10579&r1=10578&r2=10579&view=diff
==============================================================================
--- trunk/formats/format_vox.c (original)
+++ trunk/formats/format_vox.c Mon Feb 20 17:35:12 2006
@@ -178,14 +178,14 @@
 	return NULL;
 }
 
-static int vox_seek(struct ast_filestream *fs, long sample_offset, int whence)
+static int vox_seek(struct ast_filestream *fs, off_t sample_offset, int whence)
 {
      off_t offset=0,min,cur,max,distance;
 	
      min = 0;
-     cur = ftell(fs->f);
-     fseek(fs->f, 0, SEEK_END);
-	 max = ftell(fs->f);
+     cur = ftello(fs->f);
+     fseeko(fs->f, 0, SEEK_END);
+	 max = ftello(fs->f);
 	 
      /* have to fudge to frame here, so not fully to sample */
      distance = sample_offset/2;
@@ -199,19 +199,19 @@
 	  offset = (offset > max)?max:offset;
 	  offset = (offset < min)?min:offset;
      }
-     fseek(fs->f, offset, SEEK_SET);
-	 return ftell(fs->f);
+     fseeko(fs->f, offset, SEEK_SET);
+	 return ftello(fs->f);
 }
 
 static int vox_trunc(struct ast_filestream *fs)
 {
-     return ftruncate(fileno(fs->f), ftell(fs->f));
-}
-
-static long vox_tell(struct ast_filestream *fs)
+     return ftruncate(fileno(fs->f), ftello(fs->f));
+}
+
+static off_t vox_tell(struct ast_filestream *fs)
 {
      off_t offset;
-     offset = ftell(fs->f) << 1;
+     offset = ftello(fs->f) << 1;
      return offset; 
 }
 

Modified: trunk/formats/format_wav.c
URL: http://svn.digium.com/view/asterisk/trunk/formats/format_wav.c?rev=10579&r1=10578&r2=10579&view=diff
==============================================================================
--- trunk/formats/format_wav.c (original)
+++ trunk/formats/format_wav.c Mon Feb 20 17:35:12 2006
@@ -234,9 +234,9 @@
 	int datalen,filelen,bytes;
 	
 	
-	cur = ftell(f);
+	cur = ftello(f);
 	fseek(f, 0, SEEK_END);
-	end = ftell(f);
+	end = ftello(f);
 	/* data starts 44 bytes in */
 	bytes = end - 44;
 	datalen = htoll(bytes);
@@ -263,7 +263,7 @@
 		ast_log(LOG_WARNING, "Unable to set write datalen\n");
 		return -1;
 	}
-	if (fseek(f, cur, SEEK_SET)) {
+	if (fseeko(f, cur, SEEK_SET)) {
 		ast_log(LOG_WARNING, "Unable to return to position\n");
 		return -1;
 	}
@@ -419,7 +419,7 @@
 	int bytes = sizeof(tmp);
 	off_t here;
 	/* Send a frame from the file to the appropriate channel */
-	here = ftell(s->f);
+	here = ftello(s->f);
 	if ((s->maxlen - here) < bytes)
 		bytes = s->maxlen - here;
 	if (bytes < 0)
@@ -522,16 +522,15 @@
 
 }
 
-static int wav_seek(struct ast_filestream *fs, long sample_offset, int whence)
-{
-	off_t min,max,cur;
-	long offset=0,samples;
-	
+static int wav_seek(struct ast_filestream *fs, off_t sample_offset, int whence)
+{
+	off_t min, max, cur, offset = 0, samples;
+
 	samples = sample_offset * 2; /* SLINEAR is 16 bits mono, so sample_offset * 2 = bytes */
 	min = 44; /* wav header is 44 bytes */
-	cur = ftell(fs->f);
-	fseek(fs->f, 0, SEEK_END);
-	max = ftell(fs->f);
+	cur = ftello(fs->f);
+	fseeko(fs->f, 0, SEEK_END);
+	max = ftello(fs->f);
 	if (whence == SEEK_SET)
 		offset = samples + min;
 	else if (whence == SEEK_CUR || whence == SEEK_FORCECUR)
@@ -543,20 +542,20 @@
 	}
 	/* always protect the header space. */
 	offset = (offset < min)?min:offset;
-	return fseek(fs->f,offset,SEEK_SET);
+	return fseeko(fs->f, offset, SEEK_SET);
 }
 
 static int wav_trunc(struct ast_filestream *fs)
 {
-	if (ftruncate(fileno(fs->f), ftell(fs->f)))
+	if (ftruncate(fileno(fs->f), ftello(fs->f)))
 		return -1;
 	return update_header(fs->f);
 }
 
-static long wav_tell(struct ast_filestream *fs)
+static off_t wav_tell(struct ast_filestream *fs)
 {
 	off_t offset;
-	offset = ftell(fs->f);
+	offset = ftello(fs->f);
 	/* subtract header size to get samples, then divide by 2 for 16 bit samples */
 	return (offset - 44)/2;
 }

Modified: trunk/formats/format_wav_gsm.c
URL: http://svn.digium.com/view/asterisk/trunk/formats/format_wav_gsm.c?rev=10579&r1=10578&r2=10579&view=diff
==============================================================================
--- trunk/formats/format_wav_gsm.c (original)
+++ trunk/formats/format_wav_gsm.c Mon Feb 20 17:35:12 2006
@@ -232,9 +232,9 @@
 	off_t cur,end,bytes;
 	int datalen,filelen;
 	
-	cur = ftell(f);
+	cur = ftello(f);
 	fseek(f, 0, SEEK_END);
-	end = ftell(f);
+	end = ftello(f);
 	/* in a gsm WAV, data starts 60 bytes in */
 	bytes = end - 60;
 	datalen = htoll((bytes + 1) & ~0x1);
@@ -259,7 +259,7 @@
 		ast_log(LOG_WARNING, "Unable to set write datalen\n");
 		return -1;
 	}
-	if (fseek(f, cur, SEEK_SET)) {
+	if (fseeko(f, cur, SEEK_SET)) {
 		ast_log(LOG_WARNING, "Unable to return to position\n");
 		return -1;
 	}
@@ -417,7 +417,7 @@
 	ast_update_use_count();
 	/* Pad to even length */
 	fseek(s->f, 0, SEEK_END);
-	if (ftell(s->f) & 0x1)
+	if (ftello(s->f) & 0x1)
 		fwrite(&zero, 1, 1, s->f);
 	fclose(s->f);
 	free(s);
@@ -499,13 +499,13 @@
 	return 0;
 }
 
-static int wav_seek(struct ast_filestream *fs, long sample_offset, int whence)
+static int wav_seek(struct ast_filestream *fs, off_t sample_offset, int whence)
 {
 	off_t offset=0,distance,cur,min,max;
 	min = 60;
-	cur = ftell(fs->f);
+	cur = ftello(fs->f);
 	fseek(fs->f, 0, SEEK_END);
-	max = ftell(fs->f);
+	max = ftello(fs->f);
 	/* I'm getting sloppy here, I'm only going to go to even splits of the 2
 	 * frames, if you want tighter cuts use format_gsm, format_pcm, or format_wav */
 	distance = (sample_offset/320) * 65;
@@ -527,20 +527,20 @@
 		}
 	}
 	fs->secondhalf = 0;
-	return fseek(fs->f, offset, SEEK_SET);
+	return fseeko(fs->f, offset, SEEK_SET);
 }
 
 static int wav_trunc(struct ast_filestream *fs)
 {
-	if (ftruncate(fileno(fs->f), ftell(fs->f)))
+	if (ftruncate(fileno(fs->f), ftello(fs->f)))
 		return -1;
 	return update_header(fs->f);
 }
 
-static long wav_tell(struct ast_filestream *fs)
+static off_t wav_tell(struct ast_filestream *fs)
 {
 	off_t offset;
-	offset = ftell(fs->f);
+	offset = ftello(fs->f);
 	/* since this will most likely be used later in play or record, lets stick
 	 * to that level of resolution, just even frames boundaries */
 	return (offset - 52)/65*320;

Modified: trunk/include/asterisk/file.h
URL: http://svn.digium.com/view/asterisk/trunk/include/asterisk/file.h?rev=10579&r1=10578&r2=10579&view=diff
==============================================================================
--- trunk/include/asterisk/file.h (original)
+++ trunk/include/asterisk/file.h Mon Feb 20 17:35:12 2006
@@ -31,7 +31,6 @@
 #include "asterisk/frame.h"
 #include <fcntl.h>
 
-
 #if defined(__cplusplus) || defined(c_plusplus)
 extern "C" {
 #endif
@@ -56,9 +55,9 @@
 						struct ast_filestream * (*open)(FILE *f),
 						struct ast_filestream * (*rewrite)(FILE *f, const char *comment),
 						int (*write)(struct ast_filestream *, struct ast_frame *),
-						int (*seek)(struct ast_filestream *, long offset, int whence),
+						int (*seek)(struct ast_filestream *, off_t offset, int whence),
 						int (*trunc)(struct ast_filestream *),
-						long (*tell)(struct ast_filestream *),
+						off_t (*tell)(struct ast_filestream *),
 						struct ast_frame * (*read)(struct ast_filestream *, int *timetonext),
 						void (*close)(struct ast_filestream *),
 						char * (*getcomment)(struct ast_filestream *));
@@ -262,7 +261,7 @@
  * \param whence SEEK_SET, SEEK_CUR, SEEK_END 
  * Returns 0 for success, or -1 for error
  */
-int ast_seekstream(struct ast_filestream *fs, long sample_offset, int whence);
+int ast_seekstream(struct ast_filestream *fs, off_t sample_offset, int whence);
 
 /*! Trunc stream at current location */
 /*!
@@ -277,7 +276,7 @@
  * \param ms milliseconds to move
  * Returns 0 for success, or -1 for error
  */
-int ast_stream_fastforward(struct ast_filestream *fs, long ms);
+int ast_stream_fastforward(struct ast_filestream *fs, off_t ms);
 
 /*! Rewind stream ms */
 /*!
@@ -285,14 +284,14 @@
  * \param ms milliseconds to move
  * Returns 0 for success, or -1 for error
  */
-int ast_stream_rewind(struct ast_filestream *fs, long ms);
+int ast_stream_rewind(struct ast_filestream *fs, off_t ms);
 
 /*! Tell where we are in a stream */
 /*!
  * \param fs fs to act on
  * Returns a long as a sample offset into stream
  */
-long ast_tellstream(struct ast_filestream *fs);
+off_t ast_tellstream(struct ast_filestream *fs);
 
 /*! Read a frame from a filestream */
 /*!



More information about the asterisk-commits mailing list