]>
git.saurik.com Git - apple/xnu.git/blob - bsd/sys/sbuf.h
   2  * Copyright (c) 2000 Poul-Henning Kamp and Dag-Erling Co\95dan Sm¿rgrav 
   5  * Redistribution and use in source and binary forms, with or without 
   6  * modification, are permitted provided that the following conditions 
   8  * 1. Redistributions of source code must retain the above copyright 
   9  *    notice, this list of conditions and the following disclaimer 
  10  *    in this position and unchanged. 
  11  * 2. Redistributions in binary form must reproduce the above copyright 
  12  *    notice, this list of conditions and the following disclaimer in the 
  13  *    documentation and/or other materials provided with the distribution. 
  14  * 3. The name of the author may not be used to endorse or promote products 
  15  *    derived from this software without specific prior written permission. 
  17  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 
  18  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 
  19  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
  20  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 
  21  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
  22  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 
  23  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 
  24  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
  25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 
  26  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  28  *      $FreeBSD: /repoman/r/ncvs/src/sys/sys/sbuf.h,v 1.14 2004/07/09 11:35:30 des Exp $ 
  34 #include <sys/_types.h> 
  38  * Structure definition 
  41         char            *s_buf
;         /* storage buffer */ 
  42         void            *s_unused
;      /* binary compatibility. */ 
  43         int              s_size
;        /* size of storage buffer */ 
  44         int              s_len
;         /* current length of string */ 
  45 #define SBUF_FIXEDLEN   0x00000000      /* fixed length buffer (default) */ 
  46 #define SBUF_AUTOEXTEND 0x00000001      /* automatically extend buffer */ 
  47 #define SBUF_USRFLAGMSK 0x0000ffff      /* mask of flags the user may specify */ 
  48 #define SBUF_DYNAMIC    0x00010000      /* s_buf must be freed */ 
  49 #define SBUF_FINISHED   0x00020000      /* set by sbuf_finish() */ 
  50 #define SBUF_OVERFLOWED 0x00040000      /* sbuf overflowed */ 
  51 #define SBUF_DYNSTRUCT  0x00080000      /* sbuf must be freed */ 
  52         int              s_flags
;       /* flags */ 
  59 struct sbuf     
*sbuf_new(struct sbuf 
*, char *, int, int); 
  60 void             sbuf_clear(struct sbuf 
*); 
  61 int              sbuf_setpos(struct sbuf 
*, int); 
  62 int              sbuf_bcat(struct sbuf 
*, const void *, size_t); 
  63 int              sbuf_bcpy(struct sbuf 
*, const void *, size_t); 
  64 int              sbuf_cat(struct sbuf 
*, const char *); 
  65 int              sbuf_cpy(struct sbuf 
*, const char *); 
  66 int              sbuf_printf(struct sbuf 
*, const char *, ...) __printflike(2, 3); 
  67 int              sbuf_vprintf(struct sbuf 
*, const char *, va_list) __printflike(2, 0); 
  68 int              sbuf_putc(struct sbuf 
*, int); 
  69 int              sbuf_trim(struct sbuf 
*); 
  70 int              sbuf_overflowed(struct sbuf 
*); 
  71 void             sbuf_finish(struct sbuf 
*); 
  72 char            *sbuf_data(struct sbuf 
*); 
  73 int              sbuf_len(struct sbuf 
*); 
  74 int              sbuf_done(struct sbuf 
*); 
  75 void             sbuf_delete(struct sbuf 
*); 
  79 struct sbuf     
*sbuf_uionew(struct sbuf 
*, struct uio 
*, int *); 
  80 int              sbuf_bcopyin(struct sbuf 
*, const void *, size_t); 
  81 int              sbuf_copyin(struct sbuf 
*, const void *, size_t);