Diff for /tftpd/src/buf.c between versions 1.1 and 1.2

version 1.1, 2014/02/24 14:38:47 version 1.2, 2014/02/24 15:23:39
Line 0 Line 1
   #include "global.h"
   #include "buf.h"
   
   
   int
   initBuffer(int siz)
   {
           ETRACE();
   
           bf = rpack_create(NULL, 0);
           if (!bf)
                   return -1;
           if (rpack_attach(bf, siz) == -1) {
                   rpack_destroy(&bf);
                   return -1;
           }
   
           return 0;
   }
   
   void
   endBuffer()
   {
           flushBuffer(cli.fd);
           rpack_detach(bf);
           rpack_destroy(&bf);
   }
   
   int
   flushBuffer(int fd)
   {
           int ret = 0;
           const char *m;
   
           if (!bf || !cli.addr.sa.sa_len || cli.opc != TFTP_OPC_WRQ)
                   return 0;
   
           m = cfg_getAttribute(&cfg, "tftpd", "buf_pad");
           if (m && RPACK_REMAIN(bf)) {
                   memset(RPACK_NEXT(bf), (u_char) strtol(m, NULL, 0), RPACK_REMAIN(bf));
                   EVERBOSE(4, "Padding buffer with '%c' len=%d", *m, RPACK_REMAIN(bf));
                   rpack_rnext(bf, RPACK_REMAIN(bf));
           }
   
           ret = write(fd, RPACK_BUF(bf), RPACK_OFF(bf));
           if (ret == -1)
                   ESYSERR(0);
           else
                   RPACK_REWIND(bf);
   
           EVERBOSE(3, "Flush buffer ret=%d", ret);
           return ret;
   }
   
   int
   bfwrite(int fd, void *buf, int buflen)
   {
           void *m;
   
           if (!buf)
                   return -1;
   
           /* flush */
           if (RPACK_REMAIN(bf) < buflen)
                   flushBuffer(fd);
   
           m = rpack_rdata(bf, buf, buflen);
           if (!m)
                   return -1;
   
           e_free(m);
           return buflen;
   }

Removed from v.1.1  
changed lines
  Added in v.1.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>