URI: 
       tseek.c - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       tseek.c (707B)
       ---
            1 #include <u.h>
            2 #include <libc.h>
            3 #include <fcall.h>
            4 #include <9pclient.h>
            5 #include "fsimpl.h"
            6 
            7 vlong
            8 fsseek(CFid *fid, vlong n, int whence)
            9 {
           10         Dir *d;
           11 
           12         switch(whence){
           13         case 0:
           14                 qlock(&fid->lk);
           15                 fid->offset = n;
           16                 qunlock(&fid->lk);
           17                 break;
           18         case 1:
           19                 qlock(&fid->lk);
           20                 n += fid->offset;
           21                 if(n < 0){
           22                         qunlock(&fid->lk);
           23                         werrstr("negative offset");
           24                         return -1;
           25                 }
           26                 fid->offset = n;
           27                 qunlock(&fid->lk);
           28                 break;
           29         case 2:
           30                 if((d = fsdirfstat(fid)) == nil)
           31                         return -1;
           32                 n += d->length;
           33                 if(n < 0){
           34                         werrstr("negative offset");
           35                         return -1;
           36                 }
           37                 qlock(&fid->lk);
           38                 fid->offset = n;
           39                 qunlock(&fid->lk);
           40                 break;
           41         default:
           42                 werrstr("bad whence in fsseek");
           43                 return -1;
           44         }
           45         return n;
           46 }