buf.h
上传用户:s81996212
上传日期:2007-01-04
资源大小:722k
文件大小:1k
源码类别:

WEB邮件程序

开发平台:

C/C++

  1. /*
  2. ** $Id: buf.h,v 1.3 1999/12/08 06:00:38 mrsam Exp $
  3. */
  4. #ifndef buf_h
  5. #define buf_h
  6. /*
  7. ** Copyright 1998 - 1999 Double Precision, Inc.  See COPYING for
  8. ** distribution information.
  9. */
  10.  /* Oh, to hell with it, I have to write this... */
  11. #if HAVE_CONFIG_H
  12. #include "config.h"
  13. #endif
  14. #if HAVE_UNISTD_H
  15. #include <unistd.h>
  16. #endif
  17. #include <stdlib.h>
  18. #include <stdio.h>
  19. struct buf {
  20. char *ptr;
  21. size_t size, cnt;
  22. };
  23. #define buf_init(p) ( (p)->ptr=0, (p)->size=0, (p)->cnt=0)
  24. #define buf_free(p) do { if ( (p)->ptr) free ((p)->ptr); buf_init(p);} while (0)
  25. void buf_cpy(struct buf *, const char *);
  26. void buf_cpyn(struct buf *, const char *, size_t);
  27. void buf_cat(struct buf *, const char *);
  28. void buf_catn(struct buf *, const char *, size_t);
  29. void buf_memcpy(struct buf *, const char *, size_t);
  30. void buf_memcat(struct buf *, const char *, size_t);
  31. void buf_trimleft(struct buf *, size_t);
  32. void buf_allocbuf(struct buf *b, size_t n);
  33. #define buf_append(p, c) do { if ((p)->cnt >= (p)->size) buf_allocbuf((p), 
  34. (p)->cnt+1); (p)->ptr[(p)->cnt++]=(c); } while (0)
  35. #endif