commit-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

hurd/libnetfs ChangeLog io-seek.c


From: Thomas Schwinge
Subject: hurd/libnetfs ChangeLog io-seek.c
Date: Thu, 15 Jun 2006 13:55:27 +0000

CVSROOT:        /cvsroot/hurd
Module name:    hurd
Changes by:     Thomas Schwinge <tschwinge>     06/06/15 13:55:27

Modified files:
        libnetfs       : ChangeLog io-seek.c 

Log message:
        2006-06-15  Thomas Schwinge  <address@hidden>
        
                * io-seek.c (netfs_S_io_seek): Return EINVAL if file pointer 
would
                become negative.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/hurd/libnetfs/ChangeLog?cvsroot=hurd&r1=1.73&r2=1.74
http://cvs.savannah.gnu.org/viewcvs/hurd/libnetfs/io-seek.c?cvsroot=hurd&r1=1.7&r2=1.8

Patches:
Index: ChangeLog
===================================================================
RCS file: /cvsroot/hurd/hurd/libnetfs/ChangeLog,v
retrieving revision 1.73
retrieving revision 1.74
diff -u -b -r1.73 -r1.74
--- ChangeLog   12 Sep 2004 10:45:38 -0000      1.73
+++ ChangeLog   15 Jun 2006 13:55:27 -0000      1.74
@@ -1,3 +1,8 @@
+2006-06-15  Thomas Schwinge  <address@hidden>
+
+       * io-seek.c (netfs_S_io_seek): Return EINVAL if file pointer would
+       become negative.
+
 2004-09-12  Marco Gerards  <address@hidden>
 
        * io-select.c: Include <hurd/ports.h>.

Index: io-seek.c
===================================================================
RCS file: /cvsroot/hurd/hurd/libnetfs/io-seek.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- io-seek.c   30 Dec 2000 18:22:28 -0000      1.7
+++ io-seek.c   15 Jun 2006 13:55:27 -0000      1.8
@@ -1,5 +1,5 @@
 /* 
-   Copyright (C) 1995, 1996, 2000 Free Software Foundation, Inc.
+   Copyright (C) 1995, 1996, 2000, 2006 Free Software Foundation, Inc.
    Written by Michael I. Bushnell, p/BSG.
 
    This file is part of the GNU Hurd.
@@ -28,23 +28,16 @@
                 int whence,
                 off_t *newoffset)
 {
-  error_t err;
+  error_t err = 0;
 
   if (!user)
     return EOPNOTSUPP;
 
   switch (whence)
     {
-    case SEEK_SET:
-      err = 0;
-      user->po->filepointer = offset;
-      break;
-
     case SEEK_CUR:
-      err = 0;
-      user->po->filepointer += offset;
-      break;
-      
+      offset += user->po->filepointer;
+      goto check;
     case SEEK_END:
       {
         struct node *np;
@@ -54,19 +47,22 @@
 
         err = netfs_validate_stat (np, user->user);
         if (!err)
-         user->po->filepointer = np->nn_stat.st_size + offset;
+         offset += np->nn_stat.st_size;
 
         mutex_unlock (&np->lock);
-
+      }
+    case SEEK_SET:
+    check:
+      if (offset >= 0)
+       {
+         *newoffset = user->po->filepointer = offset;
         break;
       }
-      
     default:
       err = EINVAL;
       break;
     }
 
-  *newoffset = user->po->filepointer;
   return err;
 }
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]