DXR is a code search and navigation tool aimed at making sense of large projects. It supports full-text and regex searches as well as structural queries.

Mercurial (c68fe15a81fc)

VCS Links

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#ifndef UPDATEDEFINES_H
#ifndef UPDATEDEFINES_H
#define UPDATEDEFINES_H

#include <stdio.h>
#include <stdarg.h>
#include "readstrings.h"
#include "readstrings.h"

#if defined(XP_WIN)
#  include <windows.h>
#  include <shlwapi.h>
#  include <direct.h>
#  include <direct.h>
#  include <io.h>

#  ifndef F_OK
#    define F_OK 00
#  endif
#  endif
#  ifndef W_OK
#    define W_OK 02
#  endif
#  ifndef R_OK
#    define R_OK 04
#    define R_OK 04
#  endif
#  define S_ISDIR(s) (((s)&_S_IFMT) == _S_IFDIR)
#  define S_ISREG(s) (((s)&_S_IFMT) == _S_IFREG)

#  define access _access

#  define putenv _putenv
#  if defined(_MSC_VER) && _MSC_VER < 1900
#  if defined(_MSC_VER) && _MSC_VER < 1900
#    define stat _stat
#  endif
#  define DELETE_DIR L"tobedeleted"
#  define CALLBACK_BACKUP_EXT L".moz-callback"


#  define LOG_S "%S"
#  define NS_CONCAT(x, y) x##y
// The extra layer of indirection here allows this macro to be passed macros
#  define NS_T(str) NS_CONCAT(L, str)
#  define NS_SLASH NS_T('\\')
static inline int mywcsprintf(WCHAR* dest, size_t count, const WCHAR* fmt,
                              ...) {
  size_t _count = count - 1;
  va_list varargs;
  va_list varargs;
  va_start(varargs, fmt);
  int result = _vsnwprintf(dest, count - 1, fmt, varargs);
  va_end(varargs);
  dest[_count] = L'\0';
  return result;
  return result;
}
#  define NS_tsnprintf mywcsprintf
#  define NS_taccess _waccess
#  define NS_tatoi _wtoi64
#  define NS_tchdir _wchdir
#  define NS_tchdir _wchdir
#  define NS_tchmod _wchmod
#  define NS_tfopen _wfopen
#  define NS_tmkdir(path, perms) _wmkdir(path)
#  define NS_tpid __int64
#  define NS_tremove _wremove
// _wrename is used to avoid the link tracking service.
#  define NS_trename _wrename
#  define NS_trmdir _wrmdir
#  define NS_tstat _wstat
#  define NS_tstat _wstat
#  define NS_tlstat _wstat  // No symlinks on Windows
#  define NS_tstat_t _stat
#  define NS_tstrcat wcscat
#  define NS_tstrcmp wcscmp
#  define NS_tstricmp wcsicmp
#  define NS_tstricmp wcsicmp
#  define NS_tstrncmp wcsncmp
#  define NS_tstrcpy wcscpy
#  define NS_tstrncpy wcsncpy
#  define NS_tstrlen wcslen
#  define NS_tstrchr wcschr
#  define NS_tstrchr wcschr
#  define NS_tstrrchr wcsrchr
#  define NS_tstrstr wcsstr
#  include "updateutils_win.h"
#  define NS_tDIR DIR
#  define NS_tdirent dirent
#  define NS_tdirent dirent
#  define NS_topendir opendir
#  define NS_tclosedir closedir
#  define NS_treaddir readdir
#else
#  include <sys/wait.h>
#  include <sys/wait.h>
#  include <unistd.h>

#  ifdef HAVE_FTS_H
#    include <fts.h>
#  else
#    include <sys/stat.h>
#  endif
#  include <dirent.h>
#  include <dirent.h>

#  ifdef XP_MACOSX
#    include <sys/time.h>
#  endif


#  define LOG_S "%s"
#  define NS_T(str) str
#  define NS_SLASH NS_T('/')
#  define NS_tsnprintf snprintf
#  define NS_taccess access
#  define NS_taccess access
#  define NS_tatoi atoi
#  define NS_tchdir chdir
#  define NS_tchmod chmod
#  define NS_tfopen fopen
#  define NS_tmkdir mkdir
#  define NS_tmkdir mkdir
#  define NS_tpid int
#  define NS_tremove remove
#  define NS_trename rename
#  define NS_trmdir rmdir
#  define NS_tstat stat
#  define NS_tstat stat
#  define NS_tstat_t stat
#  define NS_tlstat lstat
#  define NS_tstrcat strcat
#  define NS_tstrcmp strcmp
#  define NS_tstrcmp strcmp
#  define NS_tstricmp strcasecmp
#  define NS_tstrncmp strncmp
#  define NS_tstrcpy strcpy
#  define NS_tstrncpy strncpy
#  define NS_tstrncpy strncpy
#  define NS_tstrlen strlen
#  define NS_tstrrchr strrchr
#  define NS_tstrstr strstr
#  define NS_tstrstr strstr
#  define NS_tDIR DIR
#  define NS_tdirent dirent
#  define NS_topendir opendir
#  define NS_tclosedir closedir
#  define NS_treaddir readdir
#  define NS_treaddir readdir
#endif

#define BACKUP_EXT NS_T(".moz-backup")

#ifndef MAXPATHLEN
#ifndef MAXPATHLEN
#  ifdef PATH_MAX
#    define MAXPATHLEN PATH_MAX
#  elif defined(MAX_PATH)
#    define MAXPATHLEN MAX_PATH
#  elif defined(_MAX_PATH)
#  elif defined(_MAX_PATH)
#    define MAXPATHLEN _MAX_PATH
#  elif defined(CCHMAXPATH)
#    define MAXPATHLEN CCHMAXPATH
#  else
#    define MAXPATHLEN 1024
#    define MAXPATHLEN 1024
#  endif
#endif

static inline bool NS_tvsnprintf(NS_tchar* dest, size_t count,
static inline bool NS_tvsnprintf(NS_tchar* dest, size_t count,
                                 const NS_tchar* fmt, ...) {
  va_list varargs;
  va_start(varargs, fmt);
#if defined(XP_WIN)
  int result = _vsnwprintf(dest, count, fmt, varargs);
#else
  int result = vsnprintf(dest, count, fmt, varargs);
#endif
#endif
  va_end(varargs);
  // The size_t cast of result is safe because result can only be positive after
  // the first check.
  return result >= 0 && (size_t)result < count;
}
}

#endif