1b380f11932d8dd14c1ae935cdf9cdcced61f9f6
galt
  Wed Dec 20 12:04:52 2017 -0800
Fixing cdw utils to preserve the original date of the submitted file, which helps speed up cdwSubmit for old files as well. They will not have to run md5sum manually if the file date has not changed so it can use the md5 from the record in the database.

diff --git src/inc/portable.h src/inc/portable.h
index 27d989c..f8d3019 100644
--- src/inc/portable.h
+++ src/inc/portable.h
@@ -150,27 +150,37 @@
 /* Read in an unbuffered, unechoed character from keyboard. */
 
 time_t fileModTime(char *pathName);
 /* Return file last modification time.  The units of
  * these may vary from OS to OS, but you can depend on
  * later files having a larger time. */
 
 
 boolean isPipe(int fd);
 /* determine in an open file is a pipe  */
 
 boolean maybeTouchFile(char *fileName);
 /* If file exists, set its access and mod times to now.  If it doesn't exist, create it.
  * Return FALSE if we have a problem doing so. */
 
+void touchFileFromFile(const char *oldFile, const char *newFile);
+/* Set access and mod time of newFile from oldFile. */
+
 boolean isRegularFile(char *fileName);
 /* Return TRUE if fileName is a regular file. */
 
+char *mustReadSymlinkExt(char *path, struct stat *sb);
+/* Read symlink or abort. FreeMem the returned value. */
+
+char *mustReadSymlink(char *path);
+/* Read symlink or abort. Checks that path is a symlink. 
+FreeMem the returned value. */
+
 void makeSymLink(char *oldName, char *newName);
 /* Return a symbolic link from newName to oldName or die trying */
 
 long long freeSpaceOnFileSystem(char *path);
 /* Given a path to a file or directory on a file system,  return free space
  * in bytes. */
 
 #endif /* PORTABLE_H */