1/* Copyright (c) 2010-2011, Google Inc.
2 * All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are
6 * met:
7 *
8 *     * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 *     * Neither the name of Google Inc. nor the names of its
11 * contributors may be used to endorse or promote products derived from
12 * this software without specific prior written permission.
13 *
14 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
15 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
16 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
17 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
18 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
19 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
20 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 */
26
27#ifndef TSAN_COMMON_UTIL__
28#define TSAN_COMMON_UTIL__
29
30#include "ts_util.h"
31
32#if defined(__GNUC__)
33  typedef int TS_FILE;
34  #define TS_FILE_INVALID (-1)
35#ifdef TS_LLVM
36  #define read(fd, buf, size) __real_read(fd, buf, size)
37#endif
38#elif defined(_MSC_VER)
39  typedef FILE *TS_FILE;
40  #define TS_FILE_INVALID (NULL)
41  #define read(fd, buf, size) fread(buf, 1, size, fd)
42  #define close fclose
43#endif
44
45bool StringMatch(const string& wildcard, const string& text);
46string ConvertToPlatformIndependentPath(const string &s);
47TS_FILE OpenFileReadOnly(const string &file_name, bool die_if_failed);
48string ReadFileToString(const string &file_name, bool die_if_failed);
49
50#endif
51