]> icculus.org git repositories - btb/d2x.git/blob - unused/bios/findfile.c
Import of d2x-0.0.9-pre1
[btb/d2x.git] / unused / bios / findfile.c
1 /*
2 THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
3 SOFTWARE CORPORATION ("PARALLAX").  PARALLAX, IN DISTRIBUTING THE CODE TO
4 END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
5 ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
6 IN USING, DISPLAYING,  AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
7 SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
8 FREE PURPOSES.  IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
9 CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES.  THE END-USER UNDERSTANDS
10 AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.  
11 COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION.  ALL RIGHTS RESERVED.
12 */
13
14
15 #pragma off (unreferenced)
16 static char rcsid[] = "$Id: findfile.c,v 1.1.1.1 2001-01-19 03:30:14 bradleyb Exp $";
17 #pragma on (unreferenced)
18
19 #include <dos.h>
20 #include <string.h>
21
22 #include "findfile.h"
23
24
25 //      Global Variables        ----------------------------------------------------------
26
27 static int                              _FileFindFlag = 0;
28 static struct find_t _FileFindStruct;
29
30
31
32 //      Functions
33
34 int     FileFindFirst(char *search_str, FILEFINDSTRUCT *ffstruct)
35 {
36         unsigned retval;
37         
38         if (_FileFindFlag) return -1;
39         
40         retval = _dos_findfirst(search_str, 0, &_FileFindStruct);
41         if (retval) return (int)retval;
42         else {
43                 ffstruct->size = _FileFindStruct.size;
44                 strcpy(ffstruct->name, _FileFindStruct.name);
45                 _FileFindFlag = 1;
46                 return (int)retval;
47         }
48 }
49
50
51 int     FileFindNext(FILEFINDSTRUCT *ffstruct)
52 {
53         unsigned retval;
54
55         if (!_FileFindFlag) return -1;
56
57         retval = _dos_findnext(&_FileFindStruct);
58         if (retval) return (int)retval;
59         else {
60                 ffstruct->size = _FileFindStruct.size;
61                 strcpy(ffstruct->name, _FileFindStruct.name);
62                 return (int)retval;
63         }       
64 }
65  
66
67 int     FileFindClose(void)
68 {
69         unsigned retval = 0;
70
71         if (!_FileFindFlag) return -1;
72         
73         if (retval) return (int)retval;
74         else {
75                 _FileFindFlag = 0;
76                 return (int)retval;
77         }
78 }
79
80
81 //returns 0 if no error
82 int GetFileDateTime(int filehandle, FILETIMESTRUCT *ftstruct)
83 {
84         return _dos_getftime(filehandle, &ftstruct->date, &ftstruct->time);
85
86 }
87
88
89 //returns 0 if no error
90 int SetFileDateTime(int filehandle, FILETIMESTRUCT *ftstruct)
91 {
92         return _dos_setftime(filehandle, ftstruct->date, ftstruct->time);
93 }
94
95 // returns -1 if error
96 // Gets bytes free on current drive
97 int GetDiskFree ()
98  {
99         struct diskfree_t dfree;
100         unsigned drive;
101
102         _dos_getdrive(&drive);
103         if (!_dos_getdiskfree(drive, &dfree))
104                 return (dfree.avail_clusters * dfree.sectors_per_cluster * dfree.bytes_per_sector);
105    
106    return (-1);
107  }
108
109
110
111