1/*
2Copyright (C) 1996-1997 Id Software, Inc.
3
4This program is free software; you can redistribute it and/or
5modify it under the terms of the GNU General Public License
6as published by the Free Software Foundation; either version 2
7of the License, or (at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12
13See the GNU General Public License for more details.
14
15You should have received a copy of the GNU General Public License
16along with this program; if not, write to the Free Software
17Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
18
19*/
20// sys_null.h -- null system driver to aid porting efforts
21
22#include "quakedef.h"
23#include "errno.h"
24
25/*
26===============================================================================
27
28FILE IO
29
30===============================================================================
31*/
32
33#define MAX_HANDLES             10
34FILE    *sys_handles[MAX_HANDLES];
35
36int             findhandle (void)
37{
38	int             i;
39
40	for (i=1 ; i<MAX_HANDLES ; i++)
41		if (!sys_handles[i])
42			return i;
43	Sys_Error ("out of handles");
44	return -1;
45}
46
47/*
48================
49filelength
50================
51*/
52int filelength (FILE *f)
53{
54	int             pos;
55	int             end;
56
57	pos = ftell (f);
58	fseek (f, 0, SEEK_END);
59	end = ftell (f);
60	fseek (f, pos, SEEK_SET);
61
62	return end;
63}
64
65int Sys_FileOpenRead (char *path, int *hndl)
66{
67	FILE    *f;
68	int             i;
69
70	i = findhandle ();
71
72	f = fopen(path, "rb");
73	if (!f)
74	{
75		*hndl = -1;
76		return -1;
77	}
78	sys_handles[i] = f;
79	*hndl = i;
80
81	return filelength(f);
82}
83
84int Sys_FileOpenWrite (char *path)
85{
86	FILE    *f;
87	int             i;
88
89	i = findhandle ();
90
91	f = fopen(path, "wb");
92	if (!f)
93		Sys_Error ("Error opening %s: %s", path,strerror(errno));
94	sys_handles[i] = f;
95
96	return i;
97}
98
99void Sys_FileClose (int handle)
100{
101	fclose (sys_handles[handle]);
102	sys_handles[handle] = NULL;
103}
104
105void Sys_FileSeek (int handle, int position)
106{
107	fseek (sys_handles[handle], position, SEEK_SET);
108}
109
110int Sys_FileRead (int handle, void *dest, int count)
111{
112	return fread (dest, 1, count, sys_handles[handle]);
113}
114
115int Sys_FileWrite (int handle, void *data, int count)
116{
117	return fwrite (data, 1, count, sys_handles[handle]);
118}
119
120int     Sys_FileTime (char *path)
121{
122	FILE    *f;
123
124	f = fopen(path, "rb");
125	if (f)
126	{
127		fclose(f);
128		return 1;
129	}
130
131	return -1;
132}
133
134void Sys_mkdir (char *path)
135{
136}
137
138
139/*
140===============================================================================
141
142SYSTEM IO
143
144===============================================================================
145*/
146
147void Sys_MakeCodeWriteable (unsigned long startaddr, unsigned long length)
148{
149}
150
151
152void Sys_Error (char *error, ...)
153{
154	va_list         argptr;
155
156	printf ("Sys_Error: ");
157	va_start (argptr,error);
158	vprintf (error,argptr);
159	va_end (argptr);
160	printf ("\n");
161
162	exit (1);
163}
164
165void Sys_Printf (char *fmt, ...)
166{
167	va_list         argptr;
168
169	va_start (argptr,fmt);
170	vprintf (fmt,argptr);
171	va_end (argptr);
172}
173
174void Sys_Quit (void)
175{
176	exit (0);
177}
178
179double Sys_FloatTime (void)
180{
181	static double t;
182
183	t += 0.1;
184
185	return t;
186}
187
188char *Sys_ConsoleInput (void)
189{
190	return NULL;
191}
192
193void Sys_Sleep (void)
194{
195}
196
197void Sys_SendKeyEvents (void)
198{
199}
200
201void Sys_HighFPPrecision (void)
202{
203}
204
205void Sys_LowFPPrecision (void)
206{
207}
208
209//=============================================================================
210
211void main (int argc, char **argv)
212{
213	static quakeparms_t    parms;
214
215	parms.memsize = 8*1024*1024;
216	parms.membase = malloc (parms.memsize);
217	parms.basedir = ".";
218
219	COM_InitArgv (argc, argv);
220
221	parms.argc = com_argc;
222	parms.argv = com_argv;
223
224	printf ("Host_Init\n");
225	Host_Init (&parms);
226	while (1)
227	{
228		Host_Frame (0.1);
229	}
230}
231
232
233