[asterisk-commits] tilghman: branch tilghman/issue16461 r271556 - /team/tilghman/issue16461/funcs/
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Mon Jun 21 16:08:59 CDT 2010
Author: tilghman
Date: Mon Jun 21 16:08:55 2010
New Revision: 271556
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=271556
Log:
All tests pass, now to devise some line write tests.
Modified:
team/tilghman/issue16461/funcs/func_env.c
Modified: team/tilghman/issue16461/funcs/func_env.c
URL: http://svnview.digium.com/svn/asterisk/team/tilghman/issue16461/funcs/func_env.c?view=diff&rev=271556&r1=271555&r2=271556
==============================================================================
--- team/tilghman/issue16461/funcs/func_env.c (original)
+++ team/tilghman/issue16461/funcs/func_env.c Mon Jun 21 16:08:55 2010
@@ -796,7 +796,7 @@
if (fread(fbuf, 1, sizeof(fbuf), ff) < sizeof(fbuf) && !feof(ff)) {
ast_log(LOG_ERROR, "Short read?!!\n");
}
- fseeko(ff, cur + vlength - length, SEEK_CUR);
+ fseeko(ff, cur + vlength - length, SEEK_SET);
if (fwrite(fbuf, 1, sizeof(fbuf), ff) < sizeof(fbuf)) {
ast_log(LOG_ERROR, "Short write?!!\n");
}
@@ -808,9 +808,10 @@
} else {
/* Most complex -- need to open a gap */
char fbuf[4096];
- off_t lastwritten;
+ off_t lastwritten = flength + vlength - length;
fseeko(ff, vlength - length, SEEK_END);
while (offset + sizeof(fbuf) < ftello(ff)) {
+ ast_debug(1, "This should not execute (yet) in our tests.\n");
fseeko(ff, -1 * (sizeof(fbuf) + (vlength - length)), SEEK_CUR);
if (fread(fbuf, 1, sizeof(fbuf), ff) < sizeof(fbuf)) {
ast_log(LOG_ERROR, "Short read?!!\n");
@@ -823,12 +824,14 @@
fclose(ff);
return -1;
}
- }
- /* Note the location of this last buffer -- we must not overwrite this position. */
- lastwritten = ftello(ff) - sizeof(fbuf);
+ /* Note the location of this last buffer -- we must not overwrite this position. */
+ lastwritten = ftello(ff) - sizeof(fbuf);
+ }
fseek(ff, offset + length, SEEK_SET);
/* Doesn't matter how much we read -- just need to restrict the write */
- if (fread(fbuf, 1, sizeof(fbuf), ff)) { }
+ if (fread(fbuf, 1, sizeof(fbuf), ff) && !feof(ff)) {
+ ast_log(LOG_ERROR, "Short read?!!\n");
+ }
fseek(ff, offset, SEEK_SET);
/* Write out the value, then write just up until where we last moved some data */
if (fwrite(value, 1, vlength, ff) < vlength) {
More information about the asterisk-commits
mailing list