summaryrefslogtreecommitdiff
path: root/formats/format_gsm.c
diff options
context:
space:
mode:
authorMartin Pycko <martinp@digium.com>2003-08-28 20:02:10 +0000
committerMartin Pycko <martinp@digium.com>2003-08-28 20:02:10 +0000
commitf14004abfd974a328736442971caee22053cfeec (patch)
tree457a4a3e8dec7fcff81b0a750356704758734e0c /formats/format_gsm.c
parent3ee27a8a8992dce78c0bf062d32ef7034d98b555 (diff)
Fix synchronization of recorded files when using Monitor application
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1446 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'formats/format_gsm.c')
-rwxr-xr-xformats/format_gsm.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/formats/format_gsm.c b/formats/format_gsm.c
index 078d79d33..ad39c0a0f 100755
--- a/formats/format_gsm.c
+++ b/formats/format_gsm.c
@@ -185,12 +185,14 @@ static int gsm_seek(struct ast_filestream *fs, long sample_offset, int whence)
distance = (sample_offset/160) * 33;
if(whence == SEEK_SET)
offset = distance;
- if(whence == SEEK_CUR)
+ else if(whence == SEEK_CUR || whence == SEEK_FORCECUR)
offset = distance + cur;
- if(whence == SEEK_END)
+ else if(whence == SEEK_END)
offset = max - distance;
- offset = (offset > max)?max:offset;
- offset = (offset < min)?min:offset;
+ if (whence != SEEK_FORCECUR) {
+ offset = (offset > max)?max:offset;
+ offset = (offset < min)?min:offset;
+ }
return lseek(fs->fd, offset, SEEK_SET);
}