home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / thesrc15.zip / directry.h < prev    next >
C/C++ Source or Header  |  1993-11-17  |  6KB  |  238 lines

  1. /*
  2.  * THE - The Hessling Editor. A text editor similar to VM/CMS xedit.
  3.  * Copyright (C) 1991-1993 Mark Hessling
  4.  *
  5.  * This program is free software; you can redistribute it and/or
  6.  * modify it under the terms of the GNU General Public License as
  7.  * published by the Free Software Foundation; either version 2 of
  8.  * the License, or any later version.
  9.  *
  10.  * This program is distributed in the hope that it will be useful,
  11.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  13.  * General Public License for more details.
  14.  *
  15.  * You should have received a copy of the GNU General Public License
  16.  * along with this program; if not, write to:
  17.  *
  18.  *    The Free Software Foundation, Inc.
  19.  *    675 Mass Ave,
  20.  *    Cambridge, MA 02139 USA.
  21.  *
  22.  *
  23.  * If you make modifications to this software that you feel increases
  24.  * it usefulness for the rest of the community, please email the
  25.  * changes, enhancements, bug fixes as well as any and all ideas to me.
  26.  * This software is going to be maintained and enhanced as deemed
  27.  * necessary by the community.
  28.  *
  29.  * Mark Hessling                     email: M.Hessling@gu.edu.au
  30.  * 36 David Road                     Phone: +61 7 849 7731
  31.  * Holland Park                      Fax:   +61 7 875 5314
  32.  * QLD 4121
  33.  * Australia
  34.  */
  35.  
  36. /*
  37. $Header: C:\THE\RCS\directry.h 1.4 1993/09/01 16:26:08 MH Interim MH $
  38. */
  39.  
  40. #if defined(DOS) && defined(TC)
  41.  
  42. #define F_RO FA_RDONLY
  43. #define F_HI FA_HIDDEN
  44. #define F_SY FA_SYSTEM
  45. #define F_DI FA_DIREC
  46. #define F_AR FA_ARCH
  47.  
  48. #define FSTR_TYPE struct ffblk
  49.  
  50. #define ATTR_TYPE char
  51. #define DATE_TYPE int
  52. #define TIME_TYPE int
  53. #define SIZE_TYPE long
  54. #define D_TYPE    DATE_TYPE
  55. #define T_TYPE    TIME_TYPE
  56. #define DONE_TYPE int
  57.  
  58. #define ATTR_NAME ff_attrib
  59. #define DATE_NAME ff_fdate
  60. #define TIME_NAME ff_ftime
  61. #define SIZE_NAME ff_fsize
  62. #define NAME_NAME ff_name
  63. #define D_NAME    dp->fdate
  64. #define T_NAME    dp->ftime
  65.  
  66. #define HOUR_MASK ((time & 0xf800) >> 11)
  67. #define MINU_MASK ((time & 0x07e0) >> 5)
  68. #define DAYS_MASK (date & 0x001f)
  69. #define MONT_MASK (mon[((date & 0x01e0) >> 5)-1])
  70. #define YEAR_MASK (((date & 0xfe00) >> 9)+80)
  71.  
  72. #endif
  73.  
  74. #if defined(DOS) && defined(MSC)
  75. #include <dos.h>
  76. #define F_RO _A_RDONLY
  77. #define F_HI _A_HIDDEN
  78. #define F_SY _A_SYSTEM
  79. #define F_DI _A_SUBDIR
  80. #define F_AR _A_ARCH
  81.  
  82. #define FSTR_TYPE struct find_t
  83.  
  84. #define ATTR_TYPE char
  85. #define DATE_TYPE unsigned int
  86. #define TIME_TYPE unsigned int
  87. #define SIZE_TYPE long
  88. #define D_TYPE    DATE_TYPE
  89. #define T_TYPE    TIME_TYPE
  90. #define DONE_TYPE int
  91.  
  92. #define ATTR_NAME attrib
  93. #define DATE_NAME wr_date
  94. #define TIME_NAME wr_time
  95. #define SIZE_NAME size
  96. #define NAME_NAME name
  97. #define D_NAME    dp->fdate
  98. #define T_NAME    dp->ftime
  99.  
  100. #define HOUR_MASK ((time & 0xf800) >> 11)
  101. #define MINU_MASK ((time & 0x07e0) >> 5)
  102. #define DAYS_MASK (date & 0x001f)
  103. #define MONT_MASK (mon[((date & 0x01e0) >> 5)-1])
  104. #define YEAR_MASK (((date & 0xfe00) >> 9)+80)
  105.  
  106. #endif
  107.  
  108. #if defined(DOS) && defined(GO32)
  109.  
  110. #define F_RO FA_RDONLY
  111. #define F_HI FA_HIDDEN
  112. #define F_SY FA_SYSTEM
  113. #define F_DI FA_DIREC
  114. #define F_AR FA_ARCH
  115.  
  116. #define FSTR_TYPE struct ffblk
  117.  
  118. #define ATTR_TYPE char
  119. #define DATE_TYPE int
  120. #define TIME_TYPE int
  121. #define SIZE_TYPE long
  122. #define D_TYPE    DATE_TYPE
  123. #define T_TYPE    TIME_TYPE
  124. #define DONE_TYPE int
  125.  
  126. #define ATTR_NAME ff_attrib
  127. #define DATE_NAME ff_fdate
  128. #define TIME_NAME ff_ftime
  129. #define SIZE_NAME ff_fsize
  130. #define NAME_NAME ff_name
  131. #define D_NAME    dp->fdate
  132. #define T_NAME    dp->ftime
  133.  
  134. #define HOUR_MASK ((time & 0xf800) >> 11)
  135. #define MINU_MASK ((time & 0x07e0) >> 5)
  136. #define DAYS_MASK (date & 0x001f)
  137. #define MONT_MASK (mon[((date & 0x01e0) >> 5)-1])
  138. #define YEAR_MASK (((date & 0xfe00) >> 9)+80)
  139.  
  140. #endif
  141.  
  142. #ifdef OS2
  143. #define F_RO FILE_READONLY
  144. #define F_HI FILE_HIDDEN
  145. #define F_SY FILE_SYSTEM
  146. #define F_DI FILE_DIRECTORY
  147. #define F_AR FILE_ARCHIVED
  148.  
  149. #define FSTR_TYPE FILEFINDBUF
  150.  
  151. #define ATTR_TYPE USHORT
  152. #define DATE_TYPE FDATE
  153. #define TIME_TYPE FTIME
  154. #define SIZE_TYPE ULONG
  155. #define D_TYPE    DATE_TYPE
  156. #define T_TYPE    TIME_TYPE
  157. #define DONE_TYPE USHORT
  158.  
  159. #define ATTR_NAME attrFile
  160. #define DATE_NAME fdateLastWrite
  161. #define TIME_NAME ftimeLastWrite
  162. #define SIZE_NAME cbFile
  163. #define NAME_NAME achName
  164. #define D_NAME    dp->fdate
  165. #define T_NAME    dp->ftime
  166.  
  167. #define HOUR_MASK (time.hours)
  168. #define MINU_MASK (time.minutes)
  169. #define DAYS_MASK (date.day)
  170. #define MONT_MASK (mon[date.month-1])
  171. #define YEAR_MASK (date.year+80)
  172.  
  173. #endif
  174.  
  175. #if defined(UNIX)
  176. #   if defined(M_XENIX)
  177. #      include <sys/dirent.h>
  178. #      include <sys/ndir.h>
  179. #   else
  180. #      include <dirent.h>
  181. #   endif
  182. #   include <time.h>
  183.  
  184. #define F_RO 0
  185. #define F_HI 0
  186. #define F_SY 0
  187. #define F_DI 0
  188. #define F_AR 0
  189.  
  190. #if defined(ATT) || defined(M_XENIX)
  191. #define mode_t ushort
  192. #endif
  193.  
  194. #define ATTR_TYPE mode_t
  195. #define SIZE_TYPE long
  196. #define TIME_TYPE time_t
  197. #define DATE_TYPE char
  198. #define D_TYPE    struct tm *
  199. #define T_TYPE    struct tm *
  200. #define DONE_TYPE int
  201.  
  202. #define D_NAME    timp
  203. #define T_NAME    timp
  204.  
  205. #define HOUR_MASK (time->tm_hour)
  206. #define MINU_MASK (time->tm_min)
  207. #define DAYS_MASK (date->tm_mday)
  208. #define MONT_MASK (mon[date->tm_mon])
  209. #define YEAR_MASK (date->tm_year)
  210.  
  211. #endif
  212.  
  213. struct dirfile {
  214.     char    *fname;        /* file name */
  215.     ATTR_TYPE    fattr;        /* file attributes */
  216.     SIZE_TYPE    fsize;        /* size of file */
  217.     TIME_TYPE    ftime;        /* time (last write) */
  218.     DATE_TYPE    fdate;        /* date (if seperate to time) */
  219. };
  220.  
  221. #ifdef PROTO
  222. int fcomp();               /* this has been deliberatly left undefined */
  223. char *make_full(char *,char *);
  224. int getfiles(char *,char *,struct dirfile **,struct dirfile **);
  225. char *file_attrs(ATTR_TYPE,char *);
  226. char *file_date(D_TYPE,char *);
  227. char *file_time(T_TYPE,char *);
  228. int set_dirtype(char *);
  229. #else
  230. int fcomp();
  231. char *make_full();
  232. int getfiles();
  233. char *file_attrs();
  234. char *file_date();
  235. char *file_time();
  236. int set_dirtype();
  237. #endif
  238.