File: xwritev.c

package info (click to toggle)
cipe 1.5.4free-9
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 908 kB
  • ctags: 730
  • sloc: ansic: 5,976; sh: 358; makefile: 315; asm: 200; perl: 45
file content (32 lines) | stat: -rw-r--r-- 851 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/*
   cipelib - library routines common to CIPE (user-mode part) and PKCIPE

   Copyright 2000 Olaf Titz <olaf@bigred.inka.de>

   This program is free software; you can redistribute it and/or
   modify it under the terms of the GNU General Public License
   as published by the Free Software Foundation; either version
   2 of the License, or (at your option) any later version.
*/
/* $Id: xwritev.c,v 1.2 2000/12/13 01:38:56 olaf Exp $ */

#include <sys/uio.h>
#include "cipelib.h"

int xwritev(int fd, struct iovec *vec, size_t cnt)
{
    int e=0, t=0;
    while (1) {
        if ((e=writev(fd, vec, cnt))<0)
            return e;
        t+=e;
        while (e>=vec->iov_len) {
            if (--cnt<=0)
                return t;
            e-=vec->iov_len;
            ++vec;
        }
        vec->iov_base+=e;
        vec->iov_len-=e;
    }
}