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

MySQL数据库

开发平台:

Visual C++

  1. /*-
  2.  * See the file LICENSE for redistribution information.
  3.  *
  4.  * Copyright (c) 1997-2002
  5.  * Sleepycat Software.  All rights reserved.
  6.  */
  7. #include "db_config.h"
  8. #ifndef lint
  9. static const char revid[] = "$Id: os_rpath.c,v 11.7 2002/01/11 15:53:01 bostic Exp $";
  10. #endif /* not lint */
  11. #ifndef NO_SYSTEM_INCLUDES
  12. #include <string.h>
  13. #endif
  14. #include "db_int.h"
  15. #ifdef HAVE_VXWORKS
  16. #include "iosLib.h"
  17. #endif
  18. /*
  19.  * __db_rpath --
  20.  * Return the last path separator in the path or NULL if none found.
  21.  *
  22.  * PUBLIC: char *__db_rpath __P((const char *));
  23.  */
  24. char *
  25. __db_rpath(path)
  26. const char *path;
  27. {
  28. const char *s, *last;
  29. #ifdef HAVE_VXWORKS
  30. DEV_HDR *dummy;
  31. char *ptail;
  32. /*
  33.  * VxWorks devices can be rooted at any name.  We want to
  34.  * skip over the device name and not take into account any
  35.  * PATH_SEPARATOR characters that might be in that name.
  36.  *
  37.  * XXX [#2393]
  38.  * VxWorks supports having a filename directly follow a device
  39.  * name with no separator.  I.e. to access a file 'xxx' in
  40.  * the top level directory of a device mounted at "mydrive"
  41.  * you could say "mydrivexxx" or "mydrive/xxx" or "mydrivexxx".
  42.  * We do not support the first usage here.
  43.  * XXX
  44.  */
  45. if ((dummy = iosDevFind((char *)path, &ptail)) == NULL)
  46. s = path;
  47. else
  48. s = ptail;
  49. #else
  50. s = path;
  51. #endif
  52. last = NULL;
  53. if (PATH_SEPARATOR[1] != '') {
  54. for (; s[0] != ''; ++s)
  55. if (strchr(PATH_SEPARATOR, s[0]) != NULL)
  56. last = s;
  57. } else
  58. for (; s[0] != ''; ++s)
  59. if (s[0] == PATH_SEPARATOR[0])
  60. last = s;
  61. return ((char *)last);
  62. }