os_errno.c
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:1k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /*-
  2.  * See the file LICENSE for redistribution information.
  3.  *
  4.  * Copyright (c) 1999-2002
  5.  * Sleepycat Software.  All rights reserved.
  6.  */
  7. #include "db_config.h"
  8. #ifndef lint
  9. static const char revid[] = "$Id: os_errno.c,v 11.8 2002/01/11 15:52:59 bostic Exp $";
  10. #endif /* not lint */
  11. #include "db_int.h"
  12. /*
  13.  * __os_get_errno_ret_zero --
  14.  * Return the value of errno, even if it's zero.
  15.  *
  16.  * PUBLIC: int __os_get_errno_ret_zero __P((void));
  17.  */
  18. int
  19. __os_get_errno_ret_zero()
  20. {
  21. /* This routine must be able to return the same value repeatedly. */
  22. return (errno);
  23. }
  24. /*
  25.  * __os_get_errno --
  26.  * Return the value of errno, or EAGAIN if errno is zero.
  27.  *
  28.  * PUBLIC: int __os_get_errno __P((void));
  29.  */
  30. int
  31. __os_get_errno()
  32. {
  33. /*
  34.  * This routine must be able to return the same value repeatedly.
  35.  *
  36.  * We've seen cases where system calls failed but errno was never set.
  37.  * This version of __os_get_errno() sets errno to EAGAIN if it's not
  38.  * already set, to work around that problem.  For obvious reasons, we
  39.  * can only call this function if we know an error has occurred, that
  40.  * is, we can't test errno for a non-zero value after this call.
  41.  */
  42. if (errno == 0)
  43. __os_set_errno(EAGAIN);
  44. return (errno);
  45. }
  46. /*
  47.  * __os_set_errno --
  48.  * Set the value of errno.
  49.  *
  50.  * PUBLIC: void __os_set_errno __P((int));
  51.  */
  52. void
  53. __os_set_errno(evalue)
  54. int evalue;
  55. {
  56. errno = evalue;
  57. }