22 |
|
* $Id$ |
23 |
|
*/ |
24 |
|
|
25 |
+ |
#define IN_MISC_C |
26 |
|
#include "stdinc.h" |
26 |
– |
#include "s_misc.h" |
27 |
– |
#include "irc_string.h" |
28 |
– |
#include "sprintf_irc.h" |
29 |
– |
#include "memory.h" |
30 |
– |
#include "s_log.h" |
31 |
– |
#include "event.h" |
27 |
|
|
28 |
|
struct timeval SystemTime; |
29 |
|
|
122 |
|
return timebuffer; |
123 |
|
} |
124 |
|
|
125 |
+ |
|
126 |
+ |
#ifdef _WIN32 |
127 |
+ |
/* Copyright (C) 2001 Free Software Foundation, Inc. |
128 |
+ |
* |
129 |
+ |
* Get name and information about current kernel. |
130 |
+ |
*/ |
131 |
+ |
int |
132 |
+ |
uname(struct utsname *uts) |
133 |
+ |
{ |
134 |
+ |
enum { WinNT, Win95, Win98, WinUnknown }; |
135 |
+ |
OSVERSIONINFO osver; |
136 |
+ |
SYSTEM_INFO sysinfo; |
137 |
+ |
DWORD sLength; |
138 |
+ |
DWORD os = WinUnknown; |
139 |
+ |
|
140 |
+ |
memset(uts, 0, sizeof(*uts)); |
141 |
+ |
|
142 |
+ |
osver.dwOSVersionInfoSize = sizeof (osver); |
143 |
+ |
GetVersionEx (&osver); |
144 |
+ |
GetSystemInfo (&sysinfo); |
145 |
+ |
|
146 |
+ |
switch (osver.dwPlatformId) |
147 |
+ |
{ |
148 |
+ |
case VER_PLATFORM_WIN32_NT: /* NT, Windows 2000 or Windows XP */ |
149 |
+ |
if (osver.dwMajorVersion == 4) |
150 |
+ |
strcpy (uts->sysname, "Windows NT4x"); /* NT4x */ |
151 |
+ |
else if (osver.dwMajorVersion <= 3) |
152 |
+ |
strcpy (uts->sysname, "Windows NT3x"); /* NT3x */ |
153 |
+ |
else if (osver.dwMajorVersion == 5 && osver.dwMinorVersion < 1) |
154 |
+ |
strcpy (uts->sysname, "Windows 2000"); /* 2k */ |
155 |
+ |
else if (osver.dwMajorVersion == 5 && osver.dwMinorVersion == 2) |
156 |
+ |
strcpy (uts->sysname, "Windows 2003"); /* 2003 */ |
157 |
+ |
else if (osver.dwMajorVersion == 5 && osver.dwMinorVersion == 1) |
158 |
+ |
strcpy (uts->sysname, "Windows XP"); /* XP */ |
159 |
+ |
os = WinNT; |
160 |
+ |
break; |
161 |
+ |
|
162 |
+ |
case VER_PLATFORM_WIN32_WINDOWS: /* Win95, Win98 or WinME */ |
163 |
+ |
if ((osver.dwMajorVersion > 4) || |
164 |
+ |
((osver.dwMajorVersion == 4) && (osver.dwMinorVersion > 0))) |
165 |
+ |
{ |
166 |
+ |
if (osver.dwMinorVersion >= 90) |
167 |
+ |
strcpy (uts->sysname, "Windows ME"); /* ME */ |
168 |
+ |
else |
169 |
+ |
strcpy (uts->sysname, "Windows 98"); /* 98 */ |
170 |
+ |
os = Win98; |
171 |
+ |
} |
172 |
+ |
else |
173 |
+ |
{ |
174 |
+ |
strcpy (uts->sysname, "Windows 95"); /* 95 */ |
175 |
+ |
os = Win95; |
176 |
+ |
} |
177 |
+ |
break; |
178 |
+ |
|
179 |
+ |
case VER_PLATFORM_WIN32s: /* Windows 3.x */ |
180 |
+ |
strcpy (uts->sysname, "Windows"); |
181 |
+ |
break; |
182 |
+ |
} |
183 |
+ |
|
184 |
+ |
sprintf (uts->version, "%ld.%02ld", |
185 |
+ |
osver.dwMajorVersion, osver.dwMinorVersion); |
186 |
+ |
|
187 |
+ |
if (osver.szCSDVersion[0] != '\0' && |
188 |
+ |
(strlen (osver.szCSDVersion) + strlen (uts->version) + 1) < |
189 |
+ |
sizeof (uts->version)) |
190 |
+ |
{ |
191 |
+ |
strcat (uts->version, " "); |
192 |
+ |
strcat (uts->version, osver.szCSDVersion); |
193 |
+ |
} |
194 |
+ |
|
195 |
+ |
sprintf (uts->release, "build %ld", osver.dwBuildNumber & 0xFFFF); |
196 |
+ |
|
197 |
+ |
switch (sysinfo.wProcessorArchitecture) |
198 |
+ |
{ |
199 |
+ |
case PROCESSOR_ARCHITECTURE_PPC: |
200 |
+ |
strcpy (uts->machine, "ppc"); |
201 |
+ |
break; |
202 |
+ |
case PROCESSOR_ARCHITECTURE_ALPHA: |
203 |
+ |
strcpy (uts->machine, "alpha"); |
204 |
+ |
break; |
205 |
+ |
case PROCESSOR_ARCHITECTURE_MIPS: |
206 |
+ |
strcpy (uts->machine, "mips"); |
207 |
+ |
break; |
208 |
+ |
case PROCESSOR_ARCHITECTURE_INTEL: |
209 |
+ |
/* |
210 |
+ |
* dwProcessorType is only valid in Win95 and Win98 and WinME |
211 |
+ |
* wProcessorLevel is only valid in WinNT |
212 |
+ |
*/ |
213 |
+ |
switch (os) |
214 |
+ |
{ |
215 |
+ |
case Win95: |
216 |
+ |
case Win98: |
217 |
+ |
switch (sysinfo.dwProcessorType) |
218 |
+ |
{ |
219 |
+ |
case PROCESSOR_INTEL_386: |
220 |
+ |
case PROCESSOR_INTEL_486: |
221 |
+ |
case PROCESSOR_INTEL_PENTIUM: |
222 |
+ |
sprintf (uts->machine, "i%ld", sysinfo.dwProcessorType); |
223 |
+ |
break; |
224 |
+ |
default: |
225 |
+ |
strcpy (uts->machine, "i386"); |
226 |
+ |
break; |
227 |
+ |
} |
228 |
+ |
break; |
229 |
+ |
case WinNT: |
230 |
+ |
switch(sysinfo.wProcessorArchitecture) |
231 |
+ |
{ |
232 |
+ |
case PROCESSOR_ARCHITECTURE_INTEL: |
233 |
+ |
sprintf (uts->machine, "x86(%d)", sysinfo.wProcessorLevel); |
234 |
+ |
break; |
235 |
+ |
case PROCESSOR_ARCHITECTURE_IA64: |
236 |
+ |
sprintf (uts->machine, "ia64(%d)", sysinfo.wProcessorLevel); |
237 |
+ |
break; |
238 |
+ |
#ifdef PROCESSOR_ARCHITECTURE_AMD64 |
239 |
+ |
case PROCESSOR_ARCHITECTURE_AMD64: |
240 |
+ |
sprintf (uts->machine, "x86_64(%d)", sysinfo.wProcessorLevel); |
241 |
+ |
break; |
242 |
+ |
#endif |
243 |
+ |
default: |
244 |
+ |
sprintf (uts->machine, "unknown(%d)", sysinfo.wProcessorLevel); |
245 |
+ |
break; |
246 |
+ |
} |
247 |
+ |
break; |
248 |
+ |
default: |
249 |
+ |
strcpy (uts->machine, "unknown"); |
250 |
+ |
} |
251 |
+ |
break; |
252 |
+ |
default: |
253 |
+ |
strcpy (uts->machine, "unknown"); |
254 |
+ |
break; |
255 |
+ |
} |
256 |
+ |
|
257 |
+ |
sLength = sizeof (uts->nodename) - 1; |
258 |
+ |
GetComputerName (uts->nodename, &sLength); |
259 |
+ |
return 0; |
260 |
+ |
} |
261 |
+ |
#endif |
262 |
+ |
|
263 |
+ |
|
264 |
|
#ifdef HAVE_LIBCRYPTO |
265 |
|
char * |
266 |
|
ssl_get_cipher(SSL *ssl) |
327 |
|
SystemTime.tv_sec = newtime.tv_sec; |
328 |
|
SystemTime.tv_usec = newtime.tv_usec; |
329 |
|
} |
330 |
+ |
|
331 |
+ |
/* setup_corefile() |
332 |
+ |
* |
333 |
+ |
* inputs - nothing |
334 |
+ |
* output - nothing |
335 |
+ |
* side effects - setups corefile to system limits. |
336 |
+ |
* -kre |
337 |
+ |
*/ |
338 |
+ |
void |
339 |
+ |
setup_corefile(void) |
340 |
+ |
{ |
341 |
+ |
#ifdef HAVE_SYS_RESOURCE_H |
342 |
+ |
struct rlimit rlim; /* resource limits */ |
343 |
+ |
|
344 |
+ |
/* Set corefilesize to maximum */ |
345 |
+ |
if (!getrlimit(RLIMIT_CORE, &rlim)) |
346 |
+ |
{ |
347 |
+ |
rlim.rlim_cur = rlim.rlim_max; |
348 |
+ |
setrlimit(RLIMIT_CORE, &rlim); |
349 |
+ |
} |
350 |
+ |
#endif |
351 |
+ |
} |
352 |
+ |
|
353 |
+ |
void |
354 |
+ |
libio_init(int daemonn) |
355 |
+ |
{ |
356 |
+ |
#ifndef _WIN32 |
357 |
+ |
if (daemonn) |
358 |
+ |
close_standard_fds(); |
359 |
+ |
#endif |
360 |
+ |
|
361 |
+ |
/* It ain't random, but it ought to be a little harder to guess */ |
362 |
+ |
srand(SystemTime.tv_sec ^ (SystemTime.tv_usec | (getpid() << 20))); |
363 |
+ |
|
364 |
+ |
set_time(); |
365 |
+ |
eventInit(); |
366 |
+ |
fdlist_init(); |
367 |
+ |
init_comm(); |
368 |
+ |
#ifndef NOBALLOC |
369 |
+ |
initBlockHeap(); |
370 |
+ |
#endif |
371 |
+ |
init_dlink_nodes(); |
372 |
+ |
dbuf_init(); |
373 |
+ |
#ifndef _WIN32 |
374 |
+ |
init_resolver(); |
375 |
+ |
#endif |
376 |
+ |
} |