home *** CD-ROM | disk | FTP | other *** search
/ vsiftp.vmssoftware.com / VSIPUBLIC@vsiftp.vmssoftware.com.tar / FREEWARE / FREEWARE40.ZIP / xpaint-247 / dir.h < prev    next >
C/C++ Source or Header  |  1996-05-29  |  3KB  |  101 lines

  1. /* GNU Emacs VMS directory definition file.
  2.    Copyright (C) 1986 Free Software Foundation, Inc.
  3.  
  4. This file is part of GNU Emacs.
  5.  
  6. GNU Emacs is free software; you can redistribute it and/or modify
  7. it under the terms of the GNU General Public License as published by
  8. the Free Software Foundation; either version 1, or (at your option)
  9. any later version.
  10.  
  11. GNU Emacs is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. GNU General Public License for more details.
  15.  
  16. You should have received a copy of the GNU General Public License
  17. along with GNU Emacs; see the file COPYING.  If not, write to
  18. the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  19.  
  20. /*
  21.  * Files-11 Ver. 2 directory structure (VMS V4.x - long names)
  22.  */
  23. #ifndef DIR$K_LENGTH
  24.  
  25. #define    DIR$C_FID    0
  26. #define    DIR$C_LINKNAME    1
  27. #define    DIR$K_LENGTH    6
  28. #define    DIR$C_LENGTH    6
  29. #define    DIR$S_DIRDEF    6
  30. #define    DIR$W_SIZE    0
  31. #define    DIR$W_VERLIMIT    2
  32. #define    DIR$B_FLAGS    4
  33. #define    DIR$S_TYPE    3
  34. #define    DIR$V_TYPE    0
  35. #define    DIR$V_NEXTREC    6
  36. #define    DIR$V_PREVREC    7
  37. #define    DIR$B_NAMECOUNT    5
  38. #define    DIR$S_NAME    80
  39. #define    DIR$T_NAME    6
  40.  
  41. #define    DIR$K_VERSION    8
  42. #define    DIR$C_VERSION    8
  43. #define    DIR$S_DIRDEF1    8
  44. #define    DIR$W_VERSION    0
  45. #define    DIR$S_FID    6
  46. #define    DIR$W_FID    2
  47. #define    DIR$W_FID_NUM    2
  48. #define    DIR$W_FID_SEQ    4
  49. #define    DIR$W_FID_RVN    6
  50. #define    DIR$B_FID_RVN    6
  51. #define    DIR$B_FID_NMX    7
  52.  
  53. #define    DIR$S_DIRDEF2    1
  54. #define    DIR$T_LINKNAME    0
  55.  
  56. # define S_IFLNK        0120000 /* Symbolic link                            */
  57. # define S_ISLNK(m)     ((S_IFMT&(m))==S_IFLNK)
  58.  
  59. typedef struct dir$_name {
  60. /*  short dir$w_size;        /* if you read with RMS, it eats this... */
  61.   short dir$w_verlimit;            /* maximum number of versions */
  62.   union {
  63.     unsigned char dir_b_flags;
  64. #define dir$b_flags dir__b_flags.dir_b_flags
  65.     struct {
  66.       unsigned char dir_v_type: DIR$S_TYPE;
  67. #define dir$v_type dir__b_flags.dir___b_flags.dir_v_type
  68.       unsigned char: 3;
  69.       unsigned char dir_v_nextrec: 1;
  70. #define dir$v_nextrec dir__b_flags.dir___b_flags.dir_v_nextrec
  71.       unsigned char dir_v_prevrec: 1;
  72. #define dir$v_prevrec dir__b_flags.dir___b_flags.dir_v_prevrec
  73.     } dir___b_flags;
  74.   } dir__b_flags;
  75.   unsigned char dir$b_namecount;
  76.   char dir$t_name[];
  77. } dir$_dirdef;        /* only the fixed first part */
  78.  
  79. typedef struct dir$_version {
  80.   short dir$w_version;
  81.   short dir$w_fid_num;
  82.   short dir$w_fid_seq;
  83.   union {
  84.     short dir_w_fid_rvn;
  85. #define dir$w_fid_rvn dir__w_fid_rvn.dir_w_fid_rvn
  86.     struct {
  87.       char dir_b_fid_rvn;
  88. #define dir$b_fid_rvn dir__w_fid_rvn.dir___w_fid_rvn.dir_b_fid_rvn
  89.       char dir_b_fid_nmx;
  90. #define dir$b_fid_nmx dir__w_fid_rvn.dir___w_fid_rvn.dir_b_fid_nmx
  91.     } dir___w_fid_rvn;
  92.   } dir__w_fid_rvn;
  93. } dir$_dirdef1;        /* one for each version of the file */
  94.  
  95. typedef
  96. struct dir$_linkname {
  97.   char    dir$t_linkname[];
  98. } dir$_dirdef2;
  99.  
  100. #endif
  101.