Rename tup_db_get_links->tup_db_get_inputs, and export tup_db_get_outputs
Don't use colors if print_tup_entry goes to a file.
Added t3056 - groups should be ignored in the create graph.

A group node will end up in the create graph if we update an environment variable (like PATH). We should ignore any groups in the create phase.
fuse: Correctly peel the "/" path.

If a sub-process tries to access the top-level directory in fuse, the peel() function was returning "." instead of "/". This was a hold-over from the earlier path format where part of the directory came before the @tupjob marker. Now @tupjob comes before the full path, so if we get a stat for "/@tupjob-1", that means we should be statting "/" and return the result. Otherwise we are statting the current directory, which causes getcwd() in FreeBSD to break since that scans up the tree looking for a match of "/"'s inode and device descriptor.
FreeBSD: Add -ouse_ino to fuse.

This allows tup to set the st_ino field in getattr(), so that FreeBSD's getcwd() will work correctly. FreeBSD scans up the tree to look for a matching dev/ino to "/", so when we get to the top of the /@tupjob tree, we need to use the same dev/ino.
Added t4075 - verify CreateFileW with FILE_GENERIC_WRITE.

With CreateFile(), you can apparently specify GENERIC_WRITE, or more specific write flags such as FILE_WRITE_DATA or FILE_WRITE_ATTRIBUTES. The FILE_* flags are combined into FILE_GENERIC_WRITE, which is what node.js uses to write files. Tup should treat these accesses as writes instead of reads.
inotify: Include sys/resource.h for PRIO_PROCESS define.

This lets tup compile in Arch Linux.
fuse: Add a flush() fs call to fix erroneous 'modified outside of tup' detection.

After tup waits on a sub-process, it stats the output files and stores the timestamp in the database. Later during a scan / monitor, if this stored timestamp differs from the current timestamp, tup will say that the file has been modified outside of tup and will be rebuilt. However, some strangeness in fuse will let the sub-process close its file descriptor while fuse is still processing write() calls. This means tup ends up stating the file before it has completely been written, so the timestamp is already old by the time the file is actually closed. For some strange reason, adding a flush fs callback makes the sub-process synchronize with fuse before it exits. This is what the fusexmp_fh example does as well.

The end result is now tup shouldn't get spurious 'modified outside of tup' warnings for random (usually large) output files, resulting in unecessary rebuilds.
Windows: Ignore NULL lpApplicationName

Sometimes it seems lpApplicationName is NULL, so don't check for mspdbsrv.exe in those cases so we don't segfault. For some reason this was happening when using the nimrod compiler - it calls CreateProcessA for its gcc.exe subprocess, but lpApplicationName is NULL.
osx: Fix TUP_SUDO_SUID to use the wheel group.

OSX uses wheel instead of root as the root group, so use that when setting suid if TUP_SUDO_SUID is set.
Update SQLite 3.7.13 -> 3.7.14
Update SQLite 3.7.14 -> 3.7.14.1
win32: Updates to support newer mingw toolchain (with gcc 4.6)

For some reason many of the header files and macros have moved around or disappeared. One nasty change in particular has caused the stat() wrapper to fail. Since that is only used to find the fstatat()s for Tuprules.tup files, the open_notify() call is now in the fstatat wrapper.

Currently this allows the Windows version to build with both versions of mingw, but at somepoint the 4.5x version may be deprecated.
Fix t5055 - symlink should be pointing outside tup.

This was broken way back in 3e2f3531.
Fix color flags when using auto-detection.

In 390eb000 I broke the part that sets the enabled flags for stdout/stderr, so stderr was always disabled. This caused the command to no longer be highlighted in read when it fails. Unfortunately this is difficult to test automatically, since redirecting the output to a file causes a different command path to execute.
Added t8072, t8073, t8074 - generated -> normal file with variants.

This is basically t6053, but now we have a variant in the mix. With a variant we don't trigger the usual logic, which is just checking that the generated file has a newer timestamp when the rule is removed. Instead we have to look for a new file in the srctree to see if we should display an error message or not.
Added t8075 - manually created directories inside variants.

If a user manually creates a temporary directory inside a variant with a file in it, this shouldn't cause tup to complain. With a manual directory, the srcid is -1 since there is no corresponding source-tree directory, which tup was trying to check to see if the directory could be removed.
Added t2127 - use %d as a current directory name.

There was no easy way to get the name of the directory in the Tupfile, so if you wanted to name a library based on the directory name you would have to duplicate the information in the Tupfile. Tup already has this information though, so it is easy to expose using a %-flag. Note that only the lowest level directory is reported - it is not a partial path from the tup root, and certainly not a full path. It can just be used as a handy way to name things based on the directory name in macros.
win32: Fix t5077 to not track dependencies on directories.

The fuse fs was dropping dependencies on directories, but in some cases (FindFirstFile), Windows was not doing the same. This was causing problems because some commands were getting dependencies on common directories, so any changes to Tupfile or Tuprules.tup in those directories was causing all commands to be re-executed. It is not quite as easy to ignore directories in the FindFirstFile wrapper, so instead both fuse and Windows now report directory accesses, and they are dropped in add_node_to_list() if we know the tent is a directory.
fdopendir wrapper: Close the file descriptor.

fdopendir() on Linux takes ownership of the file-descriptor, so we don't close it ourselves. In the OSX wrapper, we get the full path and call opendir() on it, but we left the file descriptor open. This would quickly cause errors as too many fds are open.