summaryrefslogtreecommitdiffstats
path: root/src/util.cc
Commit message (Collapse)AuthorAgeFilesLines
* Fixes for windows CalculateProcessorLoadkwesolowski2014-07-251-1/+4
| | | | | - Fixed bad logic condition, - Added comment to clarify
* Prepared load (-l N) support for windows.kwesolowski2014-07-251-3/+44
| | | | | Inspired by: http://stackoverflow.com/questions/23143693/retrieving-cpu-load-percent-total-in-windows-with-c
* Allow + in filenames without escapingNico Weber2014-05-301-0/+1
| | | | | | Due to #690, file.c++ used to be escaped. + seems as safe as -, so allow it to not be escaped, to keep compile command lines with a fairly common extension slightly cleaner.
* Don’t unnecessarily escape backslashes in Win32 pathsNicholas Hutchinson2014-01-081-1/+0
| | | | Under ::CommandLineToArgvW() rules, the backslash character only gets special treatment if it’s immediately followed by a double quote. So, when checking to see if a string needs Win32 escaping, it’s sufficient to check for the presence of a double quote character. This allows paths like "foo\bar" to be recognised as “sensible” paths, which don’t require the full escaping.
* More robust escaping of $in, $out pathsNicholas Hutchinson2014-01-061-0/+104
| | | | | | In summary: don’t escape if the path doesn’t contain problematic characters, otherwise: - Shell: enclose string in single quotes, escape embedded single quotes with the magic quote-backslash-quote sequence - Win32: Escape double quotes by doubling the number of consecutive backslashes that precede them (if any) and adding one more. Finally, double the number of trailing backslashes, and enclose the whole thing in double quotes.
* Simplify implementation of GetProcessorCount().Benedikt Meurer2013-09-011-22/+2
| | | | | | | | | The current implementation is unnecessarily complex, because: - The BSD derived systems implement sysconf(_SC_NPROCESSORS_ONLN) in terms of sysctl({CTL_HW,HW_NCPU}). - get_nprocs() is a GNU extension, and glibc implements sysconf(_SC_NPROCESSORS_ONLN) in terms of get_nprocs().
* Don't use va_start() with reference parameters, it's undefined behavior.Nico Weber2013-05-241-1/+4
| | | | Should fix issue #584.
* minor formatting changeNico Weber2013-05-011-3/+2
|
* added missing windows includePatrick von Reth2013-04-301-0/+1
|
* Fix Windows build more.Nico Weber2013-04-291-1/+1
|
* Introduce a Truncate() function that works on POSIX and Windows.Nico Weber2013-04-291-0/+20
| | | | Hopefully fixes the build on Windows.
* util.cc: Reusing windows workaround for cygwin.Paul Kunysch2013-02-091-1/+1
| | | | | | This fixes: src/util.cc: In function 'double GetLoadAverage()': src/util.cc:337:28: error: 'getloadavg' was not declared in this scope
* fix build on non-Linux glibc systemsPino Toscano2012-12-291-2/+2
| | | | | | | | | | | | ninja-build does not build on non-Linux archs, such as GNU/kFreeBSD and GNU/Hurd. The problem is that the GetProcessorCount() implementation for these architectures is the sysconf() one, but <unistd.h> has not been included, causing sysconf() and _SC_NPROCESSORS_ONLN to not be declared. Another solution (which is the one I chose) is to make use of the "linux" implementation which uses get_nprocs(), which is a GNU extension and thus available for anything using GNU libc.
* Improved error message with more informationRichard Geary2012-11-091-1/+1
| | | | Change-Id: Idb1ce67a320a9819de262d83b498ee10eb362ed2
* add GetProcessorCount() implementation for SolarisAlex Caudill2012-09-071-0/+9
|
* Merge pull request #401 from syntheticpp/win-network-pathEvan Martin2012-08-171-0/+11
|\ | | | | on windows a network path starts with two backslashes
| * on windows a network path starts with two backslashesPeter Kuemmel2012-08-171-0/+11
| |
* | move Win32Fatal into utilEvan Martin2012-08-121-0/+4
| |
* | windows: fix size_t<->int conversions in ninja.exeEvan Martin2012-08-101-3/+3
|/
* use DiskInterface to create the build directoryEvan Martin2012-08-071-12/+0
| | | | | | | | | | Fixes issue #392 (didn't handle creating nested build dirs right). Moves MakeDir out of util.h; all code should go through DiskInterface to simplify testing. Moves ownership of the DiskInterface into the client of the Builder, which also allows removing some code that reached inside the object as well as a minor leak.
* Merge branch 'factor-elide-middle' of git://github.com/polrop/ninjaEvan Martin2012-08-011-0/+12
|\ | | | | | | | | Conflicts: src/util.cc
| * Re-factor elide code and test it.Nicolas Despres2012-07-311-0/+13
| |
* | move processor-count code to util.ccEvan Martin2012-07-281-0/+30
| |
* | note that -l doesn't work on windowsEvan Martin2012-07-281-0/+1
| | | | | | | | Filed issue #386 about it too.
* | simplify load-average codeEvan Martin2012-07-281-15/+3
|/
* rearrange minidump patch to match ninja code styleEvan Martin2012-07-271-79/+0
|
* Merge branch 'set_terminate' of git://github.com/gmoudry/ninja into minidumpEvan Martin2012-07-271-0/+79
|\ | | | | | | | | | | | | (This likely doesn't compile, just getting all the history in place.) Conflicts: src/util.cc
| * Changed #ifdef _WIN32 to #ifdef _MSC_VER to make sure that MinGW compiles ↵Jiri Moudry2012-04-261-2/+2
| | | | | | | | happily
| * Improve handling of fatal errors on Windows, support creation of minidumpsJiri Moudry2012-03-281-0/+78
| |
* | Merge pull request #351 from syntheticpp/rateEvan Martin2012-07-271-10/+0
|\ \ | | | | | | print edges per second
| * | print edges per secondPeter Kuemmel2012-07-151-10/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | prints the rate of finished edges per second to the console, for instance with NINJA_STATUS="[%s/%t %o(%c)/s] ": [132/1922 16.1(14)/s] 16.1 is the average for all processed files (here 132 since start) 14 is the average of the last n files while n is the number specifies by -j (or its default)
* | | Use lowercase consistently.Thiago Farina2012-07-201-3/+3
|/ / | | | | | | | | | | https://github.com/martine/ninja/issues/360 Signed-off-by: Thiago Farina <tfarina@chromium.org>
* | First check for string end, then dereference. (5ms more expensive, heh.)Nico Weber2012-05-041-2/+2
| |
* | Don't walk path components twice. Speeds up CanonicalizePath() 115ms (285ms ↵Nico Weber2012-05-041-6/+2
| | | | | | | | -> 170ms).
* | Reorder a few lines, no functionality (or perf) change.Nico Weber2012-05-041-5/+4
| |
* | Skip single '/' characters earlier in the loop. 300ms -> 285ms.Nico Weber2012-05-041-8/+11
| |
* | Speed up CanonicalizePath() 6.8% (322ms -> 300ms for chrome empty build).Nico Weber2012-05-041-8/+9
| |
* | Add -l N option to limit the load average.Nicolas Despres2012-04-191-0/+29
| | | | | | | | | | | | | | This is similar to GNU make -l/--load-average option. It limits the number of job started if the load average exceed the given value. It can be very useful when running ninja on a continuous integration server where we want to use parallelism as much as possible without overloading the server.
* | Fix windows build (add #include <io.h>)Qingning Huo2012-03-151-0/+1
|/
* Add a Windows version of SetCloseOnExec()Qingning Huo2012-03-131-3/+4
|
* don't crash when CanonicalizePath removes all path componentsEvan Martin2012-02-041-0/+5
| | | | From a patch from Peter Kuemmel <syntheticpp@gmx.net>.
* check access to first element of string: string could be emptyPeter Kuemmel2012-01-231-1/+4
|
* windows: use _WIN32 define everywhereEvan Martin2012-01-221-2/+2
| | | | Rather than mixing use of WIN32 and _WIN32.
* Strip ansi escape sequences from subcommand output when not writing to a ↵Nico Weber2012-01-191-0/+28
| | | | smart terminal.
* remove string copy while loading depfilesEvan Martin2012-01-091-0/+1
|
* split canonicalizeEvan Martin2012-01-091-5/+12
|
* track canonicalize metricEvan Martin2012-01-061-0/+2
|
* allow spellcheck to be used with a vector of stringsEvan Martin2012-01-041-11/+17
|
* Use ExitProcess instead of exit in Fatal to allow extra cleanup for MSVCFrances Buontempo2012-01-041-0/+8
|
* Capitalize "error" to match with the other utility functions.Thiago Farina2011-12-201-1/+1
| | | | | | | Fatal and Warning functions already output their strings capitalized, we were just missing the Error function. So capitalize it now. Signed-off-by: Thiago Farina <tfarina@chromium.org>