| OLD | NEW |
| (Empty) |
| 1 diff --git a/AUTHORS b/AUTHORS | |
| 2 index 3c0f928..e17d9bf 100644 | |
| 3 --- a/AUTHORS | |
| 4 +++ b/AUTHORS | |
| 5 @@ -8,5 +8,6 @@ | |
| 6 | |
| 7 # Please keep the list sorted. | |
| 8 | |
| 9 +Brian Gunlogson <unixman83@gmail.com> | |
| 10 Google Inc. | |
| 11 Stefano Rivera <stefano.rivera@gmail.com> | |
| 12 diff --git a/CONTRIBUTORS b/CONTRIBUTORS | |
| 13 index 7b44e04..7f6a93d 100644 | |
| 14 --- a/CONTRIBUTORS | |
| 15 +++ b/CONTRIBUTORS | |
| 16 @@ -26,6 +26,7 @@ | |
| 17 | |
| 18 # Please keep the list sorted. | |
| 19 | |
| 20 +Brian Gunlogson <unixman83@gmail.com> | |
| 21 Dominic Battré <battre@chromium.org> | |
| 22 John Millikin <jmillikin@gmail.com> | |
| 23 Rob Pike <r@google.com> | |
| 24 diff --git a/re2/compile.cc b/re2/compile.cc | |
| 25 index 9cddb71..adb45fd 100644 | |
| 26 --- a/re2/compile.cc | |
| 27 +++ b/re2/compile.cc | |
| 28 @@ -502,7 +502,7 @@ int Compiler::RuneByteSuffix(uint8 lo, uint8 hi, bool foldca
se, int next) { | |
| 29 return UncachedRuneByteSuffix(lo, hi, foldcase, next); | |
| 30 } | |
| 31 | |
| 32 - uint64 key = ((uint64)next << 17) | (lo<<9) | (hi<<1) | foldcase; | |
| 33 + uint64 key = ((uint64)next << 17) | (lo<<9) | (hi<<1) | (foldcase ? 1ULL : 0U
LL); | |
| 34 map<uint64, int>::iterator it = rune_cache_.find(key); | |
| 35 if (it != rune_cache_.end()) | |
| 36 return it->second; | |
| 37 diff --git a/re2/prefilter_tree.cc b/re2/prefilter_tree.cc | |
| 38 index d8bc37a..cdcf77e 100644 | |
| 39 --- a/re2/prefilter_tree.cc | |
| 40 +++ b/re2/prefilter_tree.cc | |
| 41 @@ -8,6 +8,11 @@ | |
| 42 #include "re2/prefilter_tree.h" | |
| 43 #include "re2/re2.h" | |
| 44 | |
| 45 +#ifdef WIN32 | |
| 46 +#include <stdio.h> | |
| 47 +#define snprintf _snprintf | |
| 48 +#endif | |
| 49 + | |
| 50 DEFINE_int32(filtered_re2_min_atom_len, | |
| 51 3, | |
| 52 "Strings less than this length are not stored as atoms"); | |
| 53 diff --git a/re2/re2.cc b/re2/re2.cc | |
| 54 index 8d1d468..0da886d 100644 | |
| 55 --- a/re2/re2.cc | |
| 56 +++ b/re2/re2.cc | |
| 57 @@ -11,7 +11,13 @@ | |
| 58 | |
| 59 #include <stdio.h> | |
| 60 #include <string> | |
| 61 +#ifdef WIN32 | |
| 62 +#define strtoll _strtoi64 | |
| 63 +#define strtoull _strtoui64 | |
| 64 +#define strtof strtod | |
| 65 +#else | |
| 66 #include <pthread.h> | |
| 67 +#endif | |
| 68 #include <errno.h> | |
| 69 #include "util/util.h" | |
| 70 #include "util/flags.h" | |
| 71 @@ -31,10 +37,22 @@ const VariadicFunction2<bool, const StringPiece&, const RE2&
, RE2::Arg, RE2::Par | |
| 72 const VariadicFunction2<bool, StringPiece*, const RE2&, RE2::Arg, RE2::ConsumeN
> RE2::Consume; | |
| 73 const VariadicFunction2<bool, StringPiece*, const RE2&, RE2::Arg, RE2::FindAndC
onsumeN> RE2::FindAndConsume; | |
| 74 | |
| 75 -// This will trigger LNK2005 error in MSVC. | |
| 76 -#ifndef COMPILER_MSVC | |
| 77 -const int RE2::Options::kDefaultMaxMem; // initialized in re2.h | |
| 78 -#endif // COMPILER_MSVC | |
| 79 +#define kDefaultMaxMem (8<<20) | |
| 80 + | |
| 81 +RE2::Options::Options() | |
| 82 + : encoding_(EncodingUTF8), | |
| 83 + posix_syntax_(false), | |
| 84 + longest_match_(false), | |
| 85 + log_errors_(true), | |
| 86 + max_mem_(kDefaultMaxMem), | |
| 87 + literal_(false), | |
| 88 + never_nl_(false), | |
| 89 + never_capture_(false), | |
| 90 + case_sensitive_(true), | |
| 91 + perl_classes_(false), | |
| 92 + word_boundary_(false), | |
| 93 + one_line_(false) { | |
| 94 +} | |
| 95 | |
| 96 RE2::Options::Options(RE2::CannedOptions opt) | |
| 97 : encoding_(opt == RE2::Latin1 ? EncodingLatin1 : EncodingUTF8), | |
| 98 diff --git a/re2/re2.h b/re2/re2.h | |
| 99 index 272028b..c509853 100644 | |
| 100 --- a/re2/re2.h | |
| 101 +++ b/re2/re2.h | |
| 102 @@ -552,28 +552,16 @@ class RE2 { | |
| 103 // If this happens too often, RE2 falls back on the NFA implementation. | |
| 104 | |
| 105 // For now, make the default budget something close to Code Search. | |
| 106 +#ifndef WIN32 | |
| 107 static const int kDefaultMaxMem = 8<<20; | |
| 108 +#endif | |
| 109 | |
| 110 enum Encoding { | |
| 111 EncodingUTF8 = 1, | |
| 112 EncodingLatin1 | |
| 113 }; | |
| 114 | |
| 115 - Options() : | |
| 116 - encoding_(EncodingUTF8), | |
| 117 - posix_syntax_(false), | |
| 118 - longest_match_(false), | |
| 119 - log_errors_(true), | |
| 120 - max_mem_(kDefaultMaxMem), | |
| 121 - literal_(false), | |
| 122 - never_nl_(false), | |
| 123 - never_capture_(false), | |
| 124 - case_sensitive_(true), | |
| 125 - perl_classes_(false), | |
| 126 - word_boundary_(false), | |
| 127 - one_line_(false) { | |
| 128 - } | |
| 129 - | |
| 130 + Options(); | |
| 131 /*implicit*/ Options(CannedOptions); | |
| 132 | |
| 133 Encoding encoding() const { return encoding_; } | |
| 134 diff --git a/re2/stringpiece.h b/re2/stringpiece.h | |
| 135 index ab9297c..38a5150 100644 | |
| 136 --- a/re2/stringpiece.h | |
| 137 +++ b/re2/stringpiece.h | |
| 138 @@ -23,6 +23,9 @@ | |
| 139 #include <cstddef> | |
| 140 #include <iosfwd> | |
| 141 #include <string> | |
| 142 +#ifdef WIN32 | |
| 143 +#include <algorithm> | |
| 144 +#endif | |
| 145 | |
| 146 namespace re2 { | |
| 147 | |
| 148 diff --git a/re2/testing/re2_test.cc b/re2/testing/re2_test.cc | |
| 149 index b99cacf..911e868 100644 | |
| 150 --- a/re2/testing/re2_test.cc | |
| 151 +++ b/re2/testing/re2_test.cc | |
| 152 @@ -6,7 +6,9 @@ | |
| 153 // TODO: Test extractions for PartialMatch/Consume | |
| 154 | |
| 155 #include <sys/types.h> | |
| 156 +#ifndef WIN32 | |
| 157 #include <sys/mman.h> | |
| 158 +#endif | |
| 159 #include <sys/stat.h> | |
| 160 #include <errno.h> | |
| 161 #include <vector> | |
| 162 @@ -14,6 +16,11 @@ | |
| 163 #include "re2/re2.h" | |
| 164 #include "re2/regexp.h" | |
| 165 | |
| 166 +#ifdef WIN32 | |
| 167 +#include <stdio.h> | |
| 168 +#define snprintf _snprintf | |
| 169 +#endif | |
| 170 + | |
| 171 DECLARE_bool(logtostderr); | |
| 172 | |
| 173 namespace re2 { | |
| 174 @@ -657,6 +664,7 @@ TEST(RE2, FullMatchTypedNullArg) { | |
| 175 CHECK(!RE2::FullMatch("hello", "(.*)", (float*)NULL)); | |
| 176 } | |
| 177 | |
| 178 +#ifndef WIN32 | |
| 179 // Check that numeric parsing code does not read past the end of | |
| 180 // the number being parsed. | |
| 181 TEST(RE2, NULTerminated) { | |
| 182 @@ -678,6 +686,7 @@ TEST(RE2, NULTerminated) { | |
| 183 CHECK(RE2::FullMatch(StringPiece(v + pagesize - 1, 1), "(.*)", &x)); | |
| 184 CHECK_EQ(x, 1); | |
| 185 } | |
| 186 +#endif | |
| 187 | |
| 188 TEST(RE2, FullMatchTypeTests) { | |
| 189 // Type tests | |
| 190 diff --git a/util/logging.h b/util/logging.h | |
| 191 index 4443f7c..d0a2d87 100644 | |
| 192 --- a/util/logging.h | |
| 193 +++ b/util/logging.h | |
| 194 @@ -7,8 +7,13 @@ | |
| 195 #ifndef RE2_UTIL_LOGGING_H__ | |
| 196 #define RE2_UTIL_LOGGING_H__ | |
| 197 | |
| 198 +#ifndef WIN32 | |
| 199 #include <unistd.h> /* for write */ | |
| 200 +#endif | |
| 201 #include <sstream> | |
| 202 +#ifdef WIN32 | |
| 203 +#include <io.h> | |
| 204 +#endif | |
| 205 | |
| 206 // Debug-only checking. | |
| 207 #define DCHECK(condition) assert(condition) | |
| 208 diff --git a/util/mutex.h b/util/mutex.h | |
| 209 index 9787bfb..e321fae 100644 | |
| 210 --- a/util/mutex.h | |
| 211 +++ b/util/mutex.h | |
| 212 @@ -12,8 +12,10 @@ | |
| 213 | |
| 214 namespace re2 { | |
| 215 | |
| 216 +#ifndef WIN32 | |
| 217 #define HAVE_PTHREAD 1 | |
| 218 #define HAVE_RWLOCK 1 | |
| 219 +#endif | |
| 220 | |
| 221 #if defined(NO_THREADS) | |
| 222 typedef int MutexType; // to keep a lock-count | |
| 223 @@ -32,7 +34,9 @@ namespace re2 { | |
| 224 # include <pthread.h> | |
| 225 typedef pthread_mutex_t MutexType; | |
| 226 #elif defined(WIN32) | |
| 227 -# define WIN32_LEAN_AND_MEAN // We only need minimal includes | |
| 228 +# ifndef WIN32_LEAN_AND_MEAN | |
| 229 +# define WIN32_LEAN_AND_MEAN // We only need minimal includes | |
| 230 +# endif | |
| 231 # ifdef GMUTEX_TRYLOCK | |
| 232 // We need Windows NT or later for TryEnterCriticalSection(). If you | |
| 233 // don't need that functionality, you can remove these _WIN32_WINNT | |
| 234 diff --git a/util/pcre.cc b/util/pcre.cc | |
| 235 index 5e67e1f..1602133 100644 | |
| 236 --- a/util/pcre.cc | |
| 237 +++ b/util/pcre.cc | |
| 238 @@ -11,6 +11,11 @@ | |
| 239 #include "util/flags.h" | |
| 240 #include "util/pcre.h" | |
| 241 | |
| 242 +#ifdef WIN32 | |
| 243 +#define strtoll _strtoi64 | |
| 244 +#define strtoull _strtoui64 | |
| 245 +#endif | |
| 246 + | |
| 247 #define PCREPORT(level) LOG(level) | |
| 248 | |
| 249 // Default PCRE limits. | |
| 250 diff --git a/util/pcre.h b/util/pcre.h | |
| 251 index 4dda95d..771ac91 100644 | |
| 252 --- a/util/pcre.h | |
| 253 +++ b/util/pcre.h | |
| 254 @@ -180,9 +180,15 @@ struct pcre_extra { int flags, match_limit, match_limit_rec
ursion; }; | |
| 255 #define PCRE_ERROR_MATCHLIMIT 2 | |
| 256 #define PCRE_ERROR_RECURSIONLIMIT 3 | |
| 257 #define PCRE_INFO_CAPTURECOUNT 0 | |
| 258 +#ifndef WIN32 | |
| 259 #define pcre_compile(a,b,c,d,e) ({ (void)(a); (void)(b); *(c)=""; *(d)=0; (void
)(e); ((pcre*)0); }) | |
| 260 #define pcre_exec(a, b, c, d, e, f, g, h) ({ (void)(a); (void)(b); (void)(c); (
void)(d); (void)(e); (void)(f); (void)(g); (void)(h); 0; }) | |
| 261 #define pcre_fullinfo(a, b, c, d) ({ (void)(a); (void)(b); (void)(c); *(d) = 0;
0; }) | |
| 262 +#else | |
| 263 +#define pcre_compile(a,b,c,d,e) NULL | |
| 264 +#define pcre_exec(a, b, c, d, e, f, g, h) NULL | |
| 265 +#define pcre_fullinfo(a, b, c, d) NULL | |
| 266 +#endif | |
| 267 } // namespace re2 | |
| 268 #endif | |
| 269 | |
| 270 diff --git a/util/test.cc b/util/test.cc | |
| 271 index 0644829..2fe1bfa 100644 | |
| 272 --- a/util/test.cc | |
| 273 +++ b/util/test.cc | |
| 274 @@ -3,7 +3,9 @@ | |
| 275 // license that can be found in the LICENSE file. | |
| 276 | |
| 277 #include <stdio.h> | |
| 278 +#ifndef WIN32 | |
| 279 #include <sys/resource.h> | |
| 280 +#endif | |
| 281 #include "util/test.h" | |
| 282 | |
| 283 DEFINE_string(test_tmpdir, "/var/tmp", "temp directory"); | |
| 284 @@ -23,9 +25,13 @@ void RegisterTest(void (*fn)(void), const char *name) { | |
| 285 | |
| 286 namespace re2 { | |
| 287 int64 VirtualProcessSize() { | |
| 288 +#ifndef WIN32 | |
| 289 struct rusage ru; | |
| 290 getrusage(RUSAGE_SELF, &ru); | |
| 291 return (int64)ru.ru_maxrss*1024; | |
| 292 +#else | |
| 293 + return 0; | |
| 294 +#endif | |
| 295 } | |
| 296 } // namespace re2 | |
| 297 | |
| 298 diff --git a/util/util.h b/util/util.h | |
| 299 index c46ab1b..17ef824 100644 | |
| 300 --- a/util/util.h | |
| 301 +++ b/util/util.h | |
| 302 @@ -12,7 +12,9 @@ | |
| 303 #include <stddef.h> // For size_t | |
| 304 #include <assert.h> | |
| 305 #include <stdarg.h> | |
| 306 +#ifndef WIN32 | |
| 307 #include <sys/time.h> | |
| 308 +#endif | |
| 309 #include <time.h> | |
| 310 #include <ctype.h> // For isdigit, isalpha. | |
| 311 | |
| 312 @@ -51,7 +53,11 @@ using std::tr1::unordered_set; | |
| 313 #else | |
| 314 | |
| 315 #include <unordered_set> | |
| 316 +#ifdef WIN32 | |
| 317 +using std::tr1::unordered_set; | |
| 318 +#else | |
| 319 using std::unordered_set; | |
| 320 +#endif | |
| 321 | |
| 322 #endif | |
| 323 | |
| 324 diff --git a/util/valgrind.h b/util/valgrind.h | |
| 325 index ca10b1a..d097b0c 100644 | |
| 326 --- a/util/valgrind.h | |
| 327 +++ b/util/valgrind.h | |
| 328 @@ -4064,6 +4064,7 @@ typedef | |
| 329 #endif /* PLAT_ppc64_aix5 */ | |
| 330 | |
| 331 | |
| 332 +#ifndef WIN32 | |
| 333 /* ------------------------------------------------------------------ */ | |
| 334 /* ARCHITECTURE INDEPENDENT MACROS for CLIENT REQUESTS. */ | |
| 335 /* */ | |
| 336 @@ -4170,7 +4171,7 @@ typedef | |
| 337 VG_USERREQ__DISCARD_TRANSLATIONS, \ | |
| 338 _qzz_addr, _qzz_len, 0, 0, 0); \ | |
| 339 } | |
| 340 - | |
| 341 +#endif | |
| 342 | |
| 343 /* These requests are for getting Valgrind itself to print something. | |
| 344 Possibly with a backtrace. This is a really ugly hack. The return value | |
| OLD | NEW |