libpq-fs.h
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:3k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. /*-------------------------------------------------------------------------
  2.  *
  3.  * libpq-fs.h
  4.  *   definitions for using Inversion file system routines
  5.  *
  6.  *
  7.  * Copyright (c) 1994, Regents of the University of California
  8.  *
  9.  * $Id: libpq-fs.h,v 1.8 1999/02/13 23:21:35 momjian Exp $
  10.  *
  11.  *-------------------------------------------------------------------------
  12.  */
  13. #ifndef LIBPQ_FS_H
  14. #define LIBPQ_FS_H
  15. /* UNIX compatibility junk.  This should be in all systems' include files,
  16.    but this is not always the case. */
  17. #ifndef MAXNAMLEN
  18. #define MAXNAMLEN 255
  19. #endif  /* MAXNAMLEN */
  20. struct pgdirent
  21. {
  22. unsigned long d_ino;
  23. unsigned short d_namlen;
  24. char d_name[MAXNAMLEN + 1];
  25. };
  26. /*
  27.  * SysV struct dirent doesn't have d_namlen.
  28.  * This counts on d_name being last, which is moderately safe (ha) since
  29.  * it's the variable-length part of the structure.
  30.  */
  31. #ifdef SYSV_DIRENT
  32. #define D_NAMLEN(dp) 
  33. ((dp)->d_reclen - offsetof(struct dirent, d_name[0]))
  34. #else /* SYSV_DIRENT */
  35. #define D_NAMLEN(dp) 
  36. ((dp)->d_namlen)
  37. #endif  /* SYSV_DIRENT */
  38. /* for stat(2) */
  39. #ifndef S_IRUSR
  40. /* file modes */
  41. #define S_IRWXU 00700 /* read, write, execute: owner */
  42. #define S_IRUSR 00400 /* read permission: owner */
  43. #define S_IWUSR 00200 /* write permission: owner */
  44. #define S_IXUSR 00100 /* execute permission: owner */
  45. #define S_IRWXG 00070 /* read, write, execute: group */
  46. #define S_IRGRP 00040 /* read permission: group */
  47. #define S_IWGRP 00020 /* write permission: group */
  48. #define S_IXGRP 00010 /* execute permission: group */
  49. #define S_IRWXO 00007 /* read, write, execute: other */
  50. #define S_IROTH 00004 /* read permission: other */
  51. #define S_IWOTH 00002 /* write permission: other */
  52. #define S_IXOTH 00001 /* execute permission: other */
  53. #define _S_IFMT  0170000 /* type of file; sync with S_IFMT */
  54. #define _S_IFBLK 0060000 /* block special; sync with S_IFBLK */
  55. #define _S_IFCHR 0020000 /* character special sync with S_IFCHR */
  56. #define _S_IFDIR 0040000 /* directory; sync with S_IFDIR */
  57. #define _S_IFIFO 0010000 /* FIFO - named pipe; sync with S_IFIFO */
  58. #define _S_IFREG 0100000 /* regular; sync with S_IFREG */
  59. #define S_IFDIR _S_IFDIR
  60. #define S_IFREG _S_IFREG
  61. #define S_ISDIR( mode ) (((mode) & _S_IFMT) == _S_IFDIR)
  62. #endif  /* S_IRUSR */
  63. /*
  64.  * Inversion doesn't have links.
  65.  */
  66. #ifndef S_ISLNK
  67. #define S_ISLNK(x) 0
  68. #endif
  69. /*
  70.  * Flags for inversion file system large objects. Normally, creat()
  71.  * takes mode arguments, but we don't use them in inversion, since
  72.  * you get postgres protections.  Instead, we use the low sixteen bits
  73.  * of the integer mode argument to store the number of the storage
  74.  * manager to be used, and the high sixteen bits for flags.
  75.  */
  76. #define INV_WRITE 0x00020000
  77. #define INV_READ 0x00040000
  78. /* Error values for p_errno */
  79. #define PEPERM  1 /* Not owner */
  80. #define PENOENT  2 /* No such file or directory */
  81. #define PEACCES  13 /* Permission denied */
  82. #define PEEXIST  17 /* File exists */
  83. #define PENOTDIR  20 /* Not a directory */
  84. #define PEISDIR  21 /* Is a directory */
  85. #define PEINVAL  22 /* Invalid argument */
  86. #define PENAMETOOLONG  63 /* File name too long */
  87. #define PENOTEMPTY  66 /* Directory not empty */
  88. #define PEPGIO  99 /* postgres backend had problems */
  89. #endif  /* LIBPQ_FS_H */