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

WEB邮件程序

开发平台:

C/C++

  1. /*
  2. ** Copyright 1998 - 1999 Double Precision, Inc.  See COPYING for
  3. ** distribution information.
  4. */
  5. /* $Id: lockfcntl.c,v 1.3 1999/12/06 13:18:55 mrsam Exp $ */
  6. #if HAVE_CONFIG_H
  7. #include "config.h"
  8. #endif
  9. #include <sys/types.h>
  10. #if HAVE_FCNTL_H
  11. #include <fcntl.h>
  12. #endif
  13. #if HAVE_SYS_FCNTL_H
  14. #include <sys/fcntl.h>
  15. #endif
  16. #include "liblock.h"
  17. int ll_lockfd(int fd, int ltype, LL_OFFSET_TYPE start, LL_OFFSET_TYPE len)
  18. {
  19. #if HAS_FLOCK_T
  20. flock_t ft;
  21. #else
  22. struct flock ft;
  23. #endif
  24. ft.l_type=ltype & ll_unlock ? F_UNLCK:
  25. ltype & ll_writelock ? F_WRLCK:F_RDLCK;
  26. ft.l_whence=ltype & ll_whence_curpos ? 1:
  27. ltype & ll_whence_end ? 2:0;
  28. ft.l_start=start;
  29. ft.l_len=len;
  30. return (fcntl(fd, (ltype & ll_unlock) == 0 && (ltype & ll_wait)
  31. ? F_SETLKW:F_SETLK, &ft));
  32. }