home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / the25.zip / thesrc251.zip / directry.h < prev    next >
Text File  |  1998-05-08  |  11KB  |  391 lines

  1. /*
  2.  * THE - The Hessling Editor. A text editor similar to VM/CMS xedit.
  3.  * Copyright (C) 1991-1997 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@qut.edu.au
  30.  * PO Box 203                    Phone:                    +617 3802 0800
  31.  * Bellara                       http://www.gu.edu.au/gext/the/markh.html
  32.  * QLD 4507                      **** Maintainer PDCurses & REXX/SQL ****
  33.  * Australia                     ************* Author of THE ************
  34.  */
  35.  
  36. /*
  37. $Id: directry.h 2.1 1995/06/24 16:29:35 MH Rel MH $
  38. */
  39.  
  40. #if defined(DOS) && defined(TC)
  41. # define F_RO FA_RDONLY
  42. # define F_HI FA_HIDDEN
  43. # define F_SY FA_SYSTEM
  44. # define F_DI FA_DIREC
  45. # define F_AR FA_ARCH
  46.  
  47. # define FSTR_TYPE struct ffblk
  48.  
  49. # define ATTR_TYPE CHARTYPE
  50. # define DATE_TYPE short
  51. # define TIME_TYPE short
  52. # define SIZE_TYPE long
  53. # define D_TYPE    DATE_TYPE
  54. # define T_TYPE    TIME_TYPE
  55. # define DONE_TYPE short
  56.  
  57. # define ATTR_NAME ff_attrib
  58. # define DATE_NAME ff_fdate
  59. # define TIME_NAME ff_ftime
  60. # define SIZE_NAME ff_fsize
  61. # define NAME_NAME ff_name
  62.  
  63. # define HOUR_MASK ((time & 0xf800) >> 11)
  64. # define MINU_MASK ((time & 0x07e0) >> 5)
  65. # define DAYS_MASK (date & 0x001f)
  66. # define MONT_MASK (mon[((date & 0x01e0) >> 5)-1])
  67. # define YEAR_MASK (((date & 0xfe00) >> 9)+1980)
  68.  
  69. # define HH_MASK(a) ((a & 0xf800) >> 11)
  70. # define MI_MASK(a) ((a & 0x07e0) >> 5)
  71. # define SS_MASK(a) ((a & 0x001f) << 1)
  72. # define DD_MASK(a) (a & 0x001f)
  73. # define MM_MASK(a) (((a & 0x01e0) >> 5)-1)
  74. # define YY_MASK(a) (((a & 0xfe00) >> 9)+1980)
  75.  
  76. #endif
  77.  
  78. #if defined(DOS) && defined(MSC)
  79. # include <dos.h>
  80. # define F_RO _A_RDONLY
  81. # define F_HI _A_HIDDEN
  82. # define F_SY _A_SYSTEM
  83. # define F_DI _A_SUBDIR
  84. # define F_AR _A_ARCH
  85.  
  86. # define FSTR_TYPE struct find_t
  87.  
  88. # define ATTR_TYPE CHARTYPE
  89. # define DATE_TYPE unsigned short
  90. # define TIME_TYPE unsigned short
  91. # define SIZE_TYPE long
  92. # define D_TYPE    DATE_TYPE
  93. # define T_TYPE    TIME_TYPE
  94. # define DONE_TYPE short
  95.  
  96. # define ATTR_NAME attrib
  97. # define DATE_NAME wr_date
  98. # define TIME_NAME wr_time
  99. # define SIZE_NAME size
  100. # define NAME_NAME name
  101.  
  102. # define HOUR_MASK ((time & 0xf800) >> 11)
  103. # define MINU_MASK ((time & 0x07e0) >> 5)
  104. # define DAYS_MASK (date & 0x001f)
  105. # define MONT_MASK (mon[((date & 0x01e0) >> 5)-1])
  106. # define YEAR_MASK (((date & 0xfe00) >> 9)+1980)
  107.  
  108. # define HH_MASK(a) ((a & 0xf800) >> 11)
  109. # define MI_MASK(a) ((a & 0x07e0) >> 5)
  110. # define SS_MASK(a) ((a & 0x001f) << 1)
  111. # define DD_MASK(a) (a & 0x001f)
  112. # define MM_MASK(a) (((a & 0x01e0) >> 5)-1)
  113. # define YY_MASK(a) (((a & 0xfe00) >> 9)+1980)
  114. #endif
  115.  
  116. #if defined(DOS) && defined(GO32)
  117. # define F_RO FA_RDONLY
  118. # define F_HI FA_HIDDEN
  119. # define F_SY FA_SYSTEM
  120. # define F_DI FA_DIREC
  121. # define F_AR FA_ARCH
  122.  
  123. # define FSTR_TYPE struct ffblk
  124.  
  125. # define ATTR_TYPE CHARTYPE
  126. # define DATE_TYPE short
  127. # define TIME_TYPE short
  128. # define SIZE_TYPE long
  129. # define D_TYPE    DATE_TYPE
  130. # define T_TYPE    TIME_TYPE
  131. # define DONE_TYPE short
  132.  
  133. # define ATTR_NAME ff_attrib
  134. # define DATE_NAME ff_fdate
  135. # define TIME_NAME ff_ftime
  136. # define SIZE_NAME ff_fsize
  137. # define NAME_NAME ff_name
  138.  
  139. # define HOUR_MASK ((time & 0xf800) >> 11)
  140. # define MINU_MASK ((time & 0x07e0) >> 5)
  141. # define DAYS_MASK (date & 0x001f)
  142. # define MONT_MASK (mon[((date & 0x01e0) >> 5)-1])
  143. # define YEAR_MASK (((date & 0xfe00) >> 9)+1980)
  144.  
  145. # define HH_MASK(a) ((a & 0xf800) >> 11)
  146. # define MI_MASK(a) ((a & 0x07e0) >> 5)
  147. # define SS_MASK(a) ((a & 0x001f) << 1)
  148. # define DD_MASK(a) (a & 0x001f)
  149. # define MM_MASK(a) (((a & 0x01e0) >> 5)-1)
  150. # define YY_MASK(a) (((a & 0xfe00) >> 9)+1980)
  151. #endif
  152.  
  153. #if defined(EMX)
  154. # include <dirent.h>
  155. # include <time.h>
  156.  
  157. # define F_RO A_RONLY
  158. # define F_HI A_HIDDEN
  159. # define F_SY A_SYSTEM
  160. # define F_DI A_DIR
  161. # define F_AR A_ARCHIVE
  162.  
  163. # define ATTR_TYPE long
  164. # define SIZE_TYPE long
  165. # define TIME_TYPE time_t
  166. # define DATE_TYPE CHARTYPE
  167. # define D_TYPE    struct tm *
  168. # define T_TYPE    struct tm *
  169. # define DONE_TYPE short
  170.  
  171. # define HOUR_MASK (time->tm_hour)
  172. # define MINU_MASK (time->tm_min)
  173. # define DAYS_MASK (date->tm_mday)
  174. # define MONT_MASK (mon[date->tm_mon])
  175. # define YEAR_MASK (date->tm_year)
  176.  
  177. # define HH_MASK(a) (a->tm_hour)
  178. # define MI_MASK(a) (a->tm_min)
  179. # define SS_MASK(a) (a->tm_sec)
  180. # define DD_MASK(a) (a->tm_mday)
  181. # define MM_MASK(a) (a->tm_mon)
  182. # define YY_MASK(a) ((a->tm_year)+1900)
  183. #endif
  184.  
  185. #if defined(OS2) && !defined(EMX)
  186. # define F_RO FILE_READONLY
  187. # define F_HI FILE_HIDDEN
  188. # define F_SY FILE_SYSTEM
  189. # define F_DI FILE_DIRECTORY
  190. # define F_AR FILE_ARCHIVED
  191.  
  192. # define FSTR_TYPE FILEFINDBUF
  193.  
  194. # define ATTR_TYPE USHORT
  195. # define DATE_TYPE FDATE
  196. # define TIME_TYPE FTIME
  197. # define SIZE_TYPE ULONG
  198. # define D_TYPE    DATE_TYPE
  199. # define T_TYPE    TIME_TYPE
  200. # define DONE_TYPE USHORT
  201.  
  202. # define ATTR_NAME attrFile
  203. # define DATE_NAME fdateLastWrite
  204. # define TIME_NAME ftimeLastWrite
  205. # define SIZE_NAME cbFile
  206. # define NAME_NAME achName
  207.  
  208. # define HOUR_MASK (time.hours)
  209. # define MINU_MASK (time.minutes)
  210. # define DAYS_MASK (date.day)
  211. # define MONT_MASK (mon[date.month-1])
  212. # define YEAR_MASK (date.year+1980)
  213.  
  214. # define HH_MASK(a) (a.hours)
  215. # define MI_MASK(a) (a.minutes)
  216. # define SS_MASK(a) (a.twosecs/2)
  217. # define DD_MASK(a) (a.day)
  218. # define MM_MASK(a) (a.month-1)
  219. # define YY_MASK(a) (a.year+1980)
  220. #endif
  221.  
  222. #if defined(WIN32) && defined(__WATCOMC__)
  223. # include <dos.h>
  224. # define F_RO _A_RDONLY
  225. # define F_HI _A_HIDDEN
  226. # define F_SY _A_SYSTEM
  227. # define F_DI _A_SUBDIR
  228. # define F_AR _A_ARCH
  229.  
  230. # define FSTR_TYPE struct find_t
  231.  
  232. # define ATTR_TYPE unsigned short
  233. # define DATE_TYPE unsigned short
  234. # define TIME_TYPE unsigned short
  235. # define SIZE_TYPE long
  236. # define D_TYPE    DATE_TYPE
  237. # define T_TYPE    TIME_TYPE
  238. # define DONE_TYPE short
  239.  
  240. # define ATTR_NAME attrib
  241. # define DATE_NAME wr_date
  242. # define TIME_NAME wr_time
  243. # define SIZE_NAME size
  244. # define NAME_NAME name
  245.  
  246. # define HOUR_MASK ((time & 0xf800) >> 11)
  247. # define MINU_MASK ((time & 0x07e0) >> 5)
  248. # define DAYS_MASK (date & 0x001f)
  249. # define MONT_MASK (mon[((date & 0x01e0) >> 5)-1])
  250. # define YEAR_MASK (((date & 0xfe00) >> 9)+1980)
  251.  
  252. # define HH_MASK(a) ((a & 0xf800) >> 11)
  253. # define MI_MASK(a) ((a & 0x07e0) >> 5)
  254. # define SS_MASK(a) ((a & 0x001f) << 1)
  255. # define DD_MASK(a) (a & 0x001f)
  256. # define MM_MASK(a) (((a & 0x01e0) >> 5)-1)
  257. # define YY_MASK(a) (((a & 0xfe00) >> 9)+1980)
  258. #endif
  259.  
  260. #if defined(WIN32) && defined(_MSC_VER)
  261. # include <dos.h>
  262. # include <io.h>
  263. # include <time.h>
  264. # define F_RO _A_RDONLY
  265. # define F_HI _A_HIDDEN
  266. # define F_SY _A_SYSTEM
  267. # define F_DI _A_SUBDIR
  268. # define F_AR _A_ARCH
  269.  
  270. # define FSTR_TYPE struct _finddata_t
  271.  
  272. # define ATTR_TYPE unsigned
  273. # define DATE_TYPE time_t
  274. # define TIME_TYPE time_t
  275. # define SIZE_TYPE long
  276. # define D_TYPE    DATE_TYPE
  277. # define T_TYPE    TIME_TYPE
  278. # define DONE_TYPE long
  279.  
  280. # define ATTR_NAME attrib
  281. # define DATE_NAME time_write
  282. # define TIME_NAME time_write
  283. # define SIZE_NAME size
  284. # define NAME_NAME name
  285.  
  286. # define HOUR_MASK (local->tm_hour)
  287. # define MINU_MASK (local->tm_min)
  288. # define DAYS_MASK (local->tm_mday)
  289. # define MONT_MASK 
  290. # define YEAR_MASK (local->tm_year+1900)
  291.  
  292. # define HH_MASK(a) (local->tm_hour)
  293. # define MI_MASK(a) (local->tm_min)
  294. # define SS_MASK(a) (local->tm_sec)
  295. # define DD_MASK(a) (local->tm_mday)
  296. # define MM_MASK(a) (local->tm_mon)
  297. # define YY_MASK(a) (local->tm_year+1900)
  298. #endif
  299.  
  300. #if defined(UNIX) || (defined(__GNUC__) && !defined(__EMX__)) && !defined(GO32)
  301. # if defined(M_XENIX)
  302. #   include <sys/dirent.h>
  303. #   include <sys/ndir.h>
  304. # else
  305. #   if defined(HAVE_DIRENT_H)
  306. #     include <dirent.h>
  307. #   endif
  308. #   if defined(HAVE_LINUX_STAT_H)
  309. #     include <linux/stat.h>
  310. #   endif
  311. #   if defined(HAVE_SYS_MODE_H)
  312. #     include <sys/mode.h>
  313. #   endif
  314. # endif
  315. # if defined(HAVE_TIME_H)
  316. #  include <time.h>
  317. # endif
  318.  
  319. # define F_RO 0
  320. # define F_HI 0
  321. # define F_SY 0
  322. # define F_DI 0
  323. # define F_AR 0
  324.  
  325. # if defined(ATT) || defined(M_XENIX)
  326. #  define mode_t ushort
  327. # endif
  328.  
  329. # define ATTR_TYPE mode_t
  330. # define SIZE_TYPE long
  331. # define TIME_TYPE time_t
  332. # define DATE_TYPE CHARTYPE
  333. # define D_TYPE    struct tm *
  334. # define T_TYPE    struct tm *
  335. # define DONE_TYPE short
  336.  
  337. # define HOUR_MASK (time->tm_hour)
  338. # define MINU_MASK (time->tm_min)
  339. # define DAYS_MASK (date->tm_mday)
  340. # define MONT_MASK (mon[date->tm_mon])
  341. # define YEAR_MASK (date->tm_year)
  342.  
  343. # define HH_MASK(a) (a->tm_hour)
  344. # define MI_MASK(a) (a->tm_min)
  345. # define SS_MASK(a) (a->tm_sec)
  346. # define DD_MASK(a) (a->tm_mday)
  347. # define MM_MASK(a) (a->tm_mon)
  348. # define YY_MASK(a) ((a->tm_year)+1900)
  349. #endif
  350.  
  351. struct dirfile {
  352.     CHARTYPE    *fname;        /* file name */
  353.     CHARTYPE    *lname;        /* link name */
  354.     ATTR_TYPE    fattr;        /* file attributes */
  355.     SIZE_TYPE    fsize;        /* size of file */
  356.     CHARTYPE    f_hh;        /* hour */
  357.     CHARTYPE    f_mi;        /* minute */
  358.     CHARTYPE    f_ss;        /* second */
  359.     CHARTYPE    f_dd;        /* day */
  360.     CHARTYPE    f_mm;        /* month */
  361.     int    f_yy;        /* year */
  362.     int    facl;        /* acl */
  363.     int    fname_length;        /* length of filename */
  364. };
  365.  
  366. #ifdef HAVE_PROTO
  367. int date_comp();           /* this has been deliberatly left undefined */
  368. int time_comp();           /* this has been deliberatly left undefined */
  369. int size_comp();           /* this has been deliberatly left undefined */
  370. int name_comp();           /* this has been deliberatly left undefined */
  371. int dir_comp();            /* this has been deliberatly left undefined */
  372. CHARTYPE *make_full(CHARTYPE *,CHARTYPE *);
  373. short getfiles(CHARTYPE *,CHARTYPE *,struct dirfile **,struct dirfile **);
  374. CHARTYPE *file_attrs(ATTR_TYPE,CHARTYPE *,int);
  375. CHARTYPE *file_date(struct dirfile *,CHARTYPE *);
  376. CHARTYPE *file_time(struct dirfile *,CHARTYPE *);
  377. short set_dirtype(CHARTYPE *);
  378. #else
  379. int date_comp();
  380. int time_comp();
  381. int size_comp();
  382. int name_comp();
  383. int dir_comp();
  384. CHARTYPE *make_full();
  385. short getfiles();
  386. CHARTYPE *file_attrs();
  387. CHARTYPE *file_date();
  388. CHARTYPE *file_time();
  389. short set_dirtype();
  390. #endif
  391.