summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--commands/mem.c10
-rw-r--r--fs/devfs.c4
-rw-r--r--fs/fs.c10
-rw-r--r--lib/driver.c2
4 files changed, 14 insertions, 12 deletions
diff --git a/commands/mem.c b/commands/mem.c
index f7b9e4bb60..dfafda3c95 100644
--- a/commands/mem.c
+++ b/commands/mem.c
@@ -110,7 +110,7 @@ int memory_display(char *addr, ulong offs, ulong nbytes, int size)
return 0;
}
-int open_and_lseek(const char *filename, int mode, ulong pos)
+int open_and_lseek(const char *filename, int mode, off_t pos)
{
int fd, ret;
@@ -122,9 +122,9 @@ int open_and_lseek(const char *filename, int mode, ulong pos)
if (!pos)
return fd;
-
+printf("lseek to 0x%08x\n", pos);
ret = lseek(fd, pos, SEEK_SET);
- if (ret < 0) {
+ if (ret == -1) {
perror("lseek");
close(fd);
return ret;
@@ -532,7 +532,7 @@ static struct driver_d mem_drv = {
.close = dev_close_default,
.read = mem_read,
.write = mem_write,
- .lseek = dev_lseek_default,
+ .lseek = dev_lseek_default,
};
static struct driver_d ram_drv = {
@@ -542,7 +542,7 @@ static struct driver_d ram_drv = {
.close = dev_close_default,
.read = mem_read,
.write = mem_write,
- .lseek = dev_lseek_default,
+ .lseek = dev_lseek_default,
.type = DEVICE_TYPE_DRAM,
};
diff --git a/fs/devfs.c b/fs/devfs.c
index 12abc1829d..cd9bed2676 100644
--- a/fs/devfs.c
+++ b/fs/devfs.c
@@ -47,11 +47,11 @@ static int devfs_write(struct device_d *_dev, FILE *f, const void *buf, size_t s
static off_t devfs_lseek(struct device_d *_dev, FILE *f, off_t pos)
{
struct device_d *dev = f->inode;
- int ret;
+ off_t ret;
ret = dev_lseek(dev, pos);
- if (ret >= 0)
+ if (ret != -1)
f->pos = pos;
return ret;
diff --git a/fs/fs.c b/fs/fs.c
index 32fd802208..d0b008aca1 100644
--- a/fs/fs.c
+++ b/fs/fs.c
@@ -516,14 +516,16 @@ off_t lseek(int fildes, off_t offset, int whence)
struct device_d *dev;
struct fs_driver_d *fsdrv;
FILE *f = &files[fildes];
- ulong pos;
+ off_t pos;
errno = 0;
dev = f->dev;
fsdrv = (struct fs_driver_d *)dev->driver->type_data;
- if (!fsdrv->lseek)
- return -ENOSYS;
+ if (!fsdrv->lseek) {
+ errno = -ENOSYS;
+ return -1;
+ }
switch(whence) {
case SEEK_SET:
@@ -549,7 +551,7 @@ off_t lseek(int fildes, off_t offset, int whence)
out:
errno = -EINVAL;
- return errno;
+ return -1;
}
EXPORT_SYMBOL(lseek);
diff --git a/lib/driver.c b/lib/driver.c
index 45417c28a9..dcb6727671 100644
--- a/lib/driver.c
+++ b/lib/driver.c
@@ -217,7 +217,7 @@ off_t dev_lseek(struct device_d *dev, off_t offset)
if (dev->driver->lseek)
return dev->driver->lseek(dev, offset);
errno = -ENOSYS;
- return -ENOSYS;
+ return -1;
}
int dev_open(struct device_d *dev, struct filep *f)