Browse Source

fix SEEK_END bug in lseek.

git-svn-id: https://rt-thread.googlecode.com/svn/trunk@185 bbd45198-f89e-11dd-88c7-29a3b14d5316
bernard.xiong 15 years ago
parent
commit
809310e6b2
1 changed files with 3 additions and 3 deletions
  1. 3 3
      filesystem/dfs/src/dfs_posix.c

+ 3 - 3
filesystem/dfs/src/dfs_posix.c

@@ -174,7 +174,7 @@ int write(int fd, char *buf, int   len)
 |
 +------------------------------------------------------------------------------
 */
-int lseek(int fd, int   offset, int   dir)
+int lseek(int fd, int offset, int dir)
 {
 	int result;
 	struct dfs_fd* d;
@@ -196,7 +196,7 @@ int lseek(int fd, int   offset, int   dir)
 		break;
 
 	case DFS_SEEK_END:
-		offset = d->pos - offset;
+		offset += d->size;
 		break;
 	}
 
@@ -210,7 +210,7 @@ int lseek(int fd, int   offset, int   dir)
 
 	/* release the ref-count of fd */
 	fd_put(d);
-	return result;
+	return offset;
 }
 
 /*