aboutsummaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Implement modification time (ctime) checkTharre2016-08-031-34/+74
| | | | | | Hashing over the contents of dependencies over and over again is slow. To avoid this, we first check the modification time (ctime), and only if that check fails we generate a hash.
* Fix overflow error when there are too many fieldsTharre2016-08-032-6/+7
|
* Always show debug() statements to the compilerTharre2016-08-031-6/+8
|
* Implement new dependency storage systemTharre2016-07-265-108/+345
|
* Cleanup dep_info structTharre2016-06-251-23/+20
|
* Fix invalid memory access bug in parse_shebang()Tharre2016-05-221-2/+2
|
* Handle absolute $3 correctlyTharre2016-05-021-1/+5
|
* Make $3 an absolute pathTharre2015-09-161-1/+2
|
* Ensure all environment variables are setTharre2015-06-151-3/+6
|
* Actually write the source flag into the dep storeTharre2015-06-131-0/+2
|
* Don't create files with executeable permissionsTharre2015-06-131-1/+1
|
* Make `general` path from get_doscripts() absoluteTharre2015-06-131-9/+13
|
* Designated initializers set values to 0 alreadyTharre2015-06-131-6/+0
|
* Only hash files onceTharre2015-06-131-24/+31
|
* Make sha1_to_hex staticTharre2015-06-131-1/+1
|
* Use dep_info earlier to avoid duplicationTharre2015-06-131-80/+90
| | | | | | This is a prerequisite for avoiding hashing one and the same file multiple times. This also keeps the necessary parsing code for the dependency store out of build_target() into handle_c() where it belongs.
* Fix waitpid() error message and 2 if statementsTharre2015-06-131-7/+5
|
* Don't export build_target()Tharre2015-06-132-3/+1
| | | | | build_target() should not be called from outside, update_target() should be used instead.
* Pass 0755 directly instead of using POSIX macrosTharre2015-06-101-2/+1
| | | | | I'm not perfectly sure if this actually violates the POSIX standard or not, but in practice all systems seem to accept it.
* Fix error message for unsupported newlinesTharre2015-06-081-1/+1
|
* Rename `dependency file` to `dependency record`Tharre2015-05-251-5/+5
|
* Rename `do-file` to `.do script`Tharre2015-05-251-38/+39
|
* Small rename and code simplificationTharre2015-05-252-8/+7
|
* Store dependencies as plain text instead of binaryTharre2015-05-251-20/+51
| | | | | | | | Binary files are hard to debug, and even while the code required to parsing them is simpler it's not worth the tradeoff. Note that handling of newlines in target names is not implemented yet, they require some sort of special escaping.
* Use full path instead of one concatenated filenameTharre2015-05-244-52/+23
| | | | | Creation of the redo store (.redo/) is now silent, that should probably be reimplemented in a better way at a later time.
* Fix some issues with pathsTharre2015-05-052-11/+5
|
* Make redo lines colored to enhance readabilityTharre2015-05-051-1/+1
|
* Always use the CWD of the dofile, not the targetTharre2015-02-201-10/+5
|
* Replace make_relative() with relpath()Tharre2015-02-153-19/+25
| | | | | Also improve the documentation for this function, and add a few examples to clarify what it does (and what not).
* Rewrite add_dep() to be atomic through O_APPENDTharre2015-01-251-20/+24
|
* FILENAME_MAX should be the largest path there isTharre2015-01-251-1/+1
|
* Remove unecessary check for NULL from add_dep()Tharre2015-01-151-5/+1
|
* Fix the mode argument of open()Tharre2015-01-091-1/+2
|
* Randomize argument processing orderTharre2015-01-091-3/+10
|
* Make redo-* commands fail if called from outsideTharre2015-01-051-7/+14
|
* Remember sources and don't rebuild missing onesTharre2015-01-031-3/+14
|
* Represent dependencies in the dep_info structTharre2015-01-031-63/+64
|
* Exchange sha1 implementationTharre2014-12-122-299/+365
|
* Improve error message handling for debuggingTharre2014-12-053-8/+14
|
* Fix typo in build.c that made fseek() failTharre2014-11-291-1/+1
|
* Work if called with /usr/bin/redo instead of redoTharre2014-11-291-5/+6
|
* Implement perfect dependency rebuildingTharre2014-11-291-64/+62
| | | | | | | | | This means, if foo depends on blah, which in turn depends on blub and blub changes, blah get's rebuild but stays the same then foo won't be rebuild as it's dependencies (blah) have not changed. Note that because our currently included sha1 implementation does not work correctly, this doesn't either if the changes are small.
* Rename diem to fatal to further confuse matters.Tharre2014-11-245-36/+36
| | | | | | It's actually pretty easy now, fatal() is used as a short cut for appending the strerror'd errno, while die() is just the generic version of printing errors that behaves just like fprintf(stderr, msg) + exit().
* Refactor out handle_c and fix > 8096 reading bugTharre2014-11-242-73/+87
|
* Some cleanupTharre2014-11-241-48/+41
|
* Set _XOPEN_SOURCE to 600 to make fix FreeBSD buildTharre2014-11-231-1/+1
|
* Remove Redofile as an alias for default.doTharre2014-11-181-6/+0
|
* Merge all redo-*.c files into redo.c.Tharre2014-11-176-75/+28
| | | | | | | | The resulting redo binary behaves differently if called with each respective redo-* name, and is symlinked to the different command names. This should reduce the memory footprint of a redo build, as the OS only needs to keep one copy of the redo code in memory.
* Refactor error handling system by using die()Tharre2014-11-167-112/+91
| | | | Defined error messages have also been replaced with string literals.
* Change the way redo updates targets.Tharre2014-11-166-58/+81
| | | | | | | | It's done a lot more efficiently now, as we are no longer checking if a target is out-of-date before we rebuild it, but instead rebuild subtargets directly when they are checked. We also now correctly depend on .do files.