ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/libio/misc/misc.c
(Generate patch)

Comparing ircd-hybrid/libio/misc/misc.c (file contents):
Revision 68 by adx, Tue Oct 4 00:44:29 2005 UTC vs.
Revision 655 by michael, Fri Jun 9 13:30:21 2006 UTC

# Line 22 | Line 22
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  
# Line 127 | Line 122 | small_file_date(time_t lclock)
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)
# Line 193 | Line 327 | set_time(void)
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 + }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines