OLD | NEW |
1 /* Copyright (c) 2007, Google Inc. | 1 /* Copyright (c) 2007, Google Inc. |
2 * All rights reserved. | 2 * All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
58 #include <process.h> /* for _getpid */ | 58 #include <process.h> /* for _getpid */ |
59 #include <limits.h> /* for PATH_MAX */ | 59 #include <limits.h> /* for PATH_MAX */ |
60 #include <stdarg.h> /* for va_list */ | 60 #include <stdarg.h> /* for va_list */ |
61 #include <stdio.h> /* need this to override stdio's (v)snprintf */ | 61 #include <stdio.h> /* need this to override stdio's (v)snprintf */ |
62 #include <sys/types.h> /* for _off_t */ | 62 #include <sys/types.h> /* for _off_t */ |
63 #include <assert.h> | 63 #include <assert.h> |
64 #include <stdlib.h> /* for rand, srand, _strtoxxx */ | 64 #include <stdlib.h> /* for rand, srand, _strtoxxx */ |
65 | 65 |
66 /* | 66 /* |
67 * 4018: signed/unsigned mismatch is common (and ok for signed_i < unsigned_i) | 67 * 4018: signed/unsigned mismatch is common (and ok for signed_i < unsigned_i) |
68 * 4244: otherwise we get problems when substracting two size_t's to an int | 68 * 4244: otherwise we get problems when subtracting two size_t's to an int |
69 * 4288: VC++7 gets confused when a var is defined in a loop and then after it | 69 * 4288: VC++7 gets confused when a var is defined in a loop and then after it |
70 * 4267: too many false positives for "conversion gives possible data loss" | 70 * 4267: too many false positives for "conversion gives possible data loss" |
71 * 4290: it's ok windows ignores the "throw" directive | 71 * 4290: it's ok windows ignores the "throw" directive |
72 * 4996: Yes, we're ok using "unsafe" functions like vsnprintf and getenv() | 72 * 4996: Yes, we're ok using "unsafe" functions like vsnprintf and getenv() |
| 73 * 4146: internal_logging.cc intentionally negates an unsigned value |
73 */ | 74 */ |
74 #ifdef _MSC_VER | 75 #ifdef _MSC_VER |
75 #pragma warning(disable:4018 4244 4288 4267 4290 4996) | 76 #pragma warning(disable:4018 4244 4288 4267 4290 4996 4146) |
76 #endif | 77 #endif |
77 | 78 |
78 #ifndef __cplusplus | 79 #ifndef __cplusplus |
79 /* MSVC does not support C99 */ | 80 /* MSVC does not support C99 */ |
80 # if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901L | 81 # if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901L |
81 # ifdef _MSC_VER | 82 # ifdef _MSC_VER |
82 # define inline __inline | 83 # define inline __inline |
83 # else | 84 # else |
84 # define inline static | 85 # define inline static |
85 # endif | 86 # endif |
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
407 | 408 |
408 /* ----------------------------------- OTHER */ | 409 /* ----------------------------------- OTHER */ |
409 | 410 |
410 inline void srandom(unsigned int seed) { srand(seed); } | 411 inline void srandom(unsigned int seed) { srand(seed); } |
411 inline long random(void) { return rand(); } | 412 inline long random(void) { return rand(); } |
412 inline unsigned int sleep(unsigned int seconds) { | 413 inline unsigned int sleep(unsigned int seconds) { |
413 Sleep(seconds * 1000); | 414 Sleep(seconds * 1000); |
414 return 0; | 415 return 0; |
415 } | 416 } |
416 | 417 |
| 418 // mingw64 seems to define timespec (though mingw.org mingw doesn't), |
| 419 // protected by the _TIMESPEC_DEFINED macro. |
| 420 #ifndef _TIMESPEC_DEFINED |
417 struct timespec { | 421 struct timespec { |
418 int tv_sec; | 422 int tv_sec; |
419 int tv_nsec; | 423 int tv_nsec; |
420 }; | 424 }; |
| 425 #endif |
421 | 426 |
422 inline int nanosleep(const struct timespec *req, struct timespec *rem) { | 427 inline int nanosleep(const struct timespec *req, struct timespec *rem) { |
423 Sleep(req->tv_sec * 1000 + req->tv_nsec / 1000000); | 428 Sleep(req->tv_sec * 1000 + req->tv_nsec / 1000000); |
424 return 0; | 429 return 0; |
425 } | 430 } |
426 | 431 |
427 #ifndef __MINGW32__ | 432 #ifndef __MINGW32__ |
428 inline long long int strtoll(const char *nptr, char **endptr, int base) { | 433 inline long long int strtoll(const char *nptr, char **endptr, int base) { |
429 return _strtoi64(nptr, endptr, base); | 434 return _strtoi64(nptr, endptr, base); |
430 } | 435 } |
(...skipping 29 matching lines...) Expand all Loading... |
460 */ | 465 */ |
461 #define GOOGLE_MAYBE_THREADS_H_ 1 | 466 #define GOOGLE_MAYBE_THREADS_H_ 1 |
462 | 467 |
463 | 468 |
464 #endif /* _WIN32 */ | 469 #endif /* _WIN32 */ |
465 | 470 |
466 #undef inline | 471 #undef inline |
467 #undef EXTERN_C | 472 #undef EXTERN_C |
468 | 473 |
469 #endif /* GOOGLE_BASE_WINDOWS_H_ */ | 474 #endif /* GOOGLE_BASE_WINDOWS_H_ */ |
OLD | NEW |