home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-387-Vol-3of3.iso / f / fn32_101.zip / FN32ARGV.H < prev    next >
C/C++ Source or Header  |  1992-09-13  |  6KB  |  219 lines

  1. /* fn32argv.h */
  2.  
  3. #define FN32_LEADING_DOT    0x0001
  4. #define FN32_IS_PATH         0x0002
  5. #define FN32_USES_ESCAPES     0x0004
  6. #define FN32_PCDOS             0x0008
  7. #define FN32_PAT_PATH        0x0010
  8. #define FN32_S_IREAD        0x0100
  9. #define FN32_S_IWRITE        0x0080
  10. #define FN32_S_IRDWR        0x0180
  11. #define FN32_S_IEXEC        0x0040
  12. #define FN32_S_ISDIR        0x4000
  13.  
  14. #define FN32_READONLY    0x00010000
  15. #define FN32_HIDDEN        0x00020000
  16. #define FN32_SYSTEM        0x00040000
  17. #define FN32_VOLUME        0x00080000
  18. #define FN32_DIRECTORY    0x00100000
  19. #define FN32_ARCHIVE    0x00200000
  20. #define FN32_ALL_FILES    0x00400000
  21.  
  22. /* UNIX STYLE MODE BITS */
  23. #ifndef __MODEBITS__
  24. #define __MODEBITS__
  25.  
  26. #define _S_IRWXU    0000700
  27. #define _S_IRUSR    0000400
  28. #define _S_IWUSR    0000200
  29. #define _S_IXUSR    0000100
  30.  
  31. #define _S_IREAD    _S_IRUSR
  32. #define _S_IWRITE    _S_IWUSR
  33. #define _S_IEXEC    _S_IXUSR
  34.  
  35.  
  36. #define _S_ISUID    0004000
  37. #define _S_ISGID    0002000
  38. #define    _S_ISVTX    0001000
  39.  
  40. #define    _S_IFMT        0170000
  41. #define _SS_ISDIR    0040000
  42. #define _S_IFDIR    0040000
  43. #define _SS_ISCHR    0020000
  44. #define    _S_IFCHR    0020000
  45. #define    _S_IFIFO    0010000
  46. #define _SS_ISBLK    0060000
  47. #define _S_IFBLK    0060000
  48. #define _SS_ISREG    0100000
  49. #define    _S_IFREG    0100000
  50. #define _SS_ISFIFO    0010000
  51. #define    _S_IFLNK    0120000
  52. #define    _S_IFSOCK    0140000
  53.  
  54. #define _S_ISDIR(m)    ((m & _S_IFMT) == _S_IFDIR)
  55. #define _S_ISCHR(m)    ((m & _S_IFMT) == _S_IFCHR)
  56. #define _S_ISBLK(m)    ((m & _S_IFMT) == _S_IFBLK)
  57. #define _S_ISREG(m)    ((m & _S_IFMT) == _S_IFREG)
  58. #define _S_ISFIFO(m)((m & _S_IFMT) == _S_IFIFO)
  59. #define _S_ISLNK(m)    ((m & _S_IFMT) == _S_IFLNK)
  60. #define _S_ISSOCK(m)((m & _S_IFMT) == _S_IFSOCK)
  61.  
  62.  
  63. /* EXTENSIONS FOR DOS FORMAT FILES xmode */
  64. #define _SS_RO         0x0001
  65. #define _SS_HIDE     0x0002
  66. #define _SS_SYST     0x0004
  67. #define _SS_LABL     0x0008
  68. #define _SS_SUBD     0x0010
  69. #define _SS_ARCH     0x0020
  70. #define _S_ISRO(x)        (x & _SS_RO)
  71. #define _S_ISHIDE(x)    (x & _SS_HIDE)
  72. #define _S_ISSYST(x)    (x & _SS_SYST)
  73. #define _S_ISLABL(x)    (x & _SS_LABL)
  74. #define _S_ISSUBD(x)    (x & _SS_SUBD)
  75. #define _S_ISARCH(x)    (x & _SS_ARCH)
  76.  
  77. /* ADDITIONAL EXTENSIONS FOR NATIVE FORMAT 'CFF' FILES  xmode*/
  78. #define _SS_COMPR    0x0040
  79. #define _SS_CRYPT    0x0080
  80. #define _SS_CFF        0x0100
  81. #define _SS_TRUST    0x0200
  82. #define _SS_NOREM    0x0400
  83. #define _SS_FILESYS    0x0800
  84. #define _S_XFMT        0xf000
  85. #define _SS_HASHDIR    0x1000
  86. #define _SS_TREEDIR    0x2000
  87.  
  88. #define _S_COMPR(x)        (x & _SS_COMPR)
  89. #define _S_CRYPT(x)        (x & _SS_CRYPT)
  90. #define _S_CFF(x)        (x & _SS_CFF)
  91. #define _S_ISTRUST(x)    (x & _SS_TRUST)
  92. #define _S_NOREM(x)        (x & _SS_NOREM)
  93. #define _S_ISFILESYS(x)    (x & _SS_FILESYS)
  94. #define _S_ISHASHDIR(x)    ((x & _S_XFMT) == _SS_HASHDIR)
  95. #define _S_ISTREEDIR(x)    ((x & _S_XFMT) == _SS_TREEDIR)
  96.  
  97. #endif /* __MODEBITS__ */
  98.  
  99. typedef struct _stat
  100.     {
  101.         unsigned short    st_dev;        /* logical device */
  102.         unsigned short    st_ino;        /* 0 */
  103.         unsigned short    st_mode;    /* unix style mode bits */
  104.         unsigned short    st_nlink;    /* Number of hard links */
  105.         unsigned short    st_uid;        /* unused */
  106.         unsigned short    st_gid;        /* unused */
  107.         unsigned short    st_rdev;    /* driveno */
  108.         long            st_size;    /* bytes used */
  109.         unsigned long    st_atime;    /* dostime */
  110.         unsigned long    st_mtime;    /* ditto */
  111.         unsigned long    st_ctime;    /* ditto */
  112.         unsigned short    st_xmode;    /* dos attrib + extras */
  113.         char            st_sname[14]; /* short name if it exists */
  114.     } _STAT;
  115.  
  116.  
  117. #define _PATH_MAX 64
  118. #define _NAME_MAX 32
  119. #define _DIRENT_MAX 1
  120.  
  121. #undef    NULL
  122. #define NULL ((void *)0)
  123.  
  124. /* Our version of struct dirent, notice that 'stats' are included,
  125.     this eliminates the need to 'stat' a file when using '_readdir' */
  126.  
  127. struct _dirent
  128.     {
  129.     _STAT stats;
  130.     int    d_namlen;
  131.     char d_name[_NAME_MAX+2];
  132.     };
  133.  
  134. /* Extended FCB used by FCB PCDOS services */
  135. #pragma pack(1)
  136. typedef struct {
  137.     char    id;
  138.     char    pad1[5];
  139.     char    attr;
  140.     char    drive;
  141.     char    name[8];
  142.     char    ext[3];
  143.     short    blknum;
  144.     short    recsize;
  145.     long    filesize;
  146.     short    date;
  147.     short    time;
  148.     char    pad2[8];
  149.     char    CurRecnum;
  150.     long    RelRecnum;
  151. }XFCB;
  152. #pragma pack(2)
  153.  
  154.  
  155. /*
  156. THIS IS THE STRUCTURE USED WHEN GETTING A DIRECTORY ENTRY WITH THE
  157. FINDFIRST OR FINDNEXT PCDOS SERVICES
  158. */
  159.  
  160. #define DIR_READONLY        0X0001            /* READ-ONLY FILE */
  161. #define DIR_HIDDEN            0X0002            /* HIDDEN FILE */
  162. #define DIR_SYSTEM            0X0004            /* SYSTEM FILE */
  163. #define DIR_VOLUME            0X0008            /* FILE IS VOLUME LABEL */
  164. #define DIR_DIRECTORY        0X0010            /* SUBDIRECTORY */
  165. #define DIR_ARCHIVE            0X0020            /* ARCHIVED FILE */
  166. #define DIR_ALLFILES        0X0040            /* ALL FILES */
  167.  
  168. #pragma pack(1)
  169. typedef struct
  170.     {
  171.     char reserved [21];        /* RESERVED FOR DOS IN SCAN. */
  172.     char attr;                /* FILE ATTRIBUTES */
  173.     unsigned short time;    /* FILE TIME */
  174.     unsigned short date;    /* FILE DATE */
  175.     long size;                /* FILE SIZE */
  176.     char name [14];            /* FILE NAME */
  177.     } DOSDIR;
  178.  
  179. /* This is an actual fatfile directory entry */
  180. typedef struct
  181.     {
  182.         char    name[11];
  183.         char    attr;
  184.         unsigned short    pad[5];
  185.         unsigned short    time;
  186.         unsigned short date;
  187.         unsigned short    cluster;
  188.         long    size;
  189.     } FATdir;
  190. #pragma pack(2)
  191.  
  192. /* This is the structure that 'dirp' points to */
  193. typedef struct _dir
  194.     {
  195.     struct _dir    *fptr;
  196.     struct _dir    *bptr;
  197.     long id;
  198. #define DIRP_ID (0x2ace73f1)
  199.     long cur_spot;
  200.     int    fd;
  201.     char varpat[74];
  202.     char dirname[512];
  203.     DOSDIR dosdir;
  204.     struct _dirent dir;
  205.     } _DIR;
  206.  
  207.  
  208. extern int _far 
  209.     fn32argv(int *argcp,char ***argvp,_STAT ***statvp,unsigned long flags);
  210. extern    _DIR  *  _far _opendir(char  *dirname);
  211. extern    struct _dirent  *  _far _readdir(_DIR  *dirp);
  212. extern    long  _far _telldir(_DIR  *dirp);
  213. extern    void  _far _seekdir(_DIR  *dirp, long spot);
  214. extern    void  _far _rewinddir(_DIR  *dirp);
  215. extern    int  _far _closedir(_DIR  *dirp);
  216. extern void _far argv_free(int *argcp, char ***argvp, _STAT ***statvp);
  217. extern int _far fn32_rename(char _far *old, char _far *new);
  218.  
  219.