diff options
author | Ramil Kalimullin <ramil@mysql.com> | 2010-12-09 13:49:11 +0300 |
---|---|---|
committer | Ramil Kalimullin <ramil@mysql.com> | 2010-12-09 13:49:11 +0300 |
commit | d740bd50a9e990cb6ad830b2f02a52a153f1127a (patch) | |
tree | 4f7e3b43c31457eb35f487e3a07132abf8212077 /mysys/my_seek.c | |
parent | 352ce1b596758403ab9d439b06267fec4d191a58 (diff) | |
parent | 0137e02899949d714723c537ed23b51e7f5b1a75 (diff) | |
download | mariadb-git-d740bd50a9e990cb6ad830b2f02a52a153f1127a.tar.gz |
Manual merge with mysql-5.1-bugteam.
Diffstat (limited to 'mysys/my_seek.c')
-rw-r--r-- | mysys/my_seek.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/mysys/my_seek.c b/mysys/my_seek.c index 8502c259353..ca12a2e95d1 100644 --- a/mysys/my_seek.c +++ b/mysys/my_seek.c @@ -14,6 +14,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "mysys_priv.h" +#include "mysys_err.h" /* Seek to a position in a file. @@ -42,8 +43,7 @@ actual error. */ -my_off_t my_seek(File fd, my_off_t pos, int whence, - myf MyFlags __attribute__((unused))) +my_off_t my_seek(File fd, my_off_t pos, int whence, myf MyFlags) { os_off_t newpos= -1; DBUG_ENTER("my_seek"); @@ -63,7 +63,9 @@ my_off_t my_seek(File fd, my_off_t pos, int whence, if (newpos == (os_off_t) -1) { my_errno= errno; - DBUG_PRINT("error",("lseek: %llu errno: %d", (ulonglong) newpos,errno)); + if (MyFlags & MY_WME) + my_error(EE_CANT_SEEK, MYF(0), my_filename(fd), my_errno); + DBUG_PRINT("error", ("lseek: %llu errno: %d", (ulonglong) newpos, errno)); DBUG_RETURN(MY_FILEPOS_ERROR); } if ((my_off_t) newpos != pos) @@ -77,7 +79,7 @@ my_off_t my_seek(File fd, my_off_t pos, int whence, /* Tell current position of file */ /* ARGSUSED */ -my_off_t my_tell(File fd, myf MyFlags __attribute__((unused))) +my_off_t my_tell(File fd, myf MyFlags) { os_off_t pos; DBUG_ENTER("my_tell"); @@ -89,7 +91,12 @@ my_off_t my_tell(File fd, myf MyFlags __attribute__((unused))) pos= my_seek(fd, 0L, MY_SEEK_CUR,0); #endif if (pos == (os_off_t) -1) + { my_errno= errno; + if (MyFlags & MY_WME) + my_error(EE_CANT_SEEK, MYF(0), my_filename(fd), my_errno); + DBUG_PRINT("error", ("tell: %llu errno: %d", (ulonglong) pos, my_errno)); + } DBUG_PRINT("exit",("pos: %llu", (ulonglong) pos)); DBUG_RETURN((my_off_t) pos); } /* my_tell */ |