[Box Backup-commit] COMMIT r2636 - in box/trunk: bin/bbackupquery lib/backupclient

subversion at boxbackup.org subversion at boxbackup.org
Wed Feb 24 20:28:33 GMT 2010


Author: chris
Date: 2010-02-24 20:28:33 +0000 (Wed, 24 Feb 2010)
New Revision: 2636

Modified:
   box/trunk/bin/bbackupquery/BackupQueries.cpp
   box/trunk/lib/backupclient/BackupClientFileAttributes.cpp
   box/trunk/lib/backupclient/BackupClientFileAttributes.h
Log:
Add option to display attribute modification times from additional 
attributes if available in bbackupquery.


Modified: box/trunk/bin/bbackupquery/BackupQueries.cpp
===================================================================
--- box/trunk/bin/bbackupquery/BackupQueries.cpp	2010-02-24 20:12:00 UTC (rev 2635)
+++ box/trunk/bin/bbackupquery/BackupQueries.cpp	2010-02-24 20:28:33 UTC (rev 2636)
@@ -212,7 +212,7 @@
 	{
 		{ "quit", "" },
 		{ "exit", "" },
-		{ "list", "rodIFtTsh", },
+		{ "list", "rodIFtTash", },
 		{ "pwd",  "" },
 		{ "cd",   "od" },
 		{ "lcd",  "" },
@@ -397,6 +397,7 @@
 	#define LIST_OPTION_NOFLAGS		'F'
 	#define LIST_OPTION_TIMES_LOCAL		't'
 	#define LIST_OPTION_TIMES_UTC		'T'
+	#define LIST_OPTION_TIMES_ATTRIBS	'a'
 	#define LIST_OPTION_SIZEINBLOCKS	's'
 	#define LIST_OPTION_DISPLAY_HASH	'h'
 
@@ -436,18 +437,48 @@
 }
 
 static std::string GetTimeString(BackupStoreDirectory::Entry& en,
-	bool useLocalTime)
+	bool useLocalTime, bool showAttrModificationTimes)
 {
 	std::ostringstream out;
-	out << BoxTimeToISO8601String(en.GetModificationTime(), useLocalTime);
+	box_time_t originalTime, newAttributesTime;
 
+	// there is no attribute modification time in the directory
+	// entry, unfortunately, so we can't display it.
+	originalTime = en.GetModificationTime();
+	out << BoxTimeToISO8601String(originalTime, useLocalTime);
+
 	if(en.HasAttributes())
 	{
 		const StreamableMemBlock &storeAttr(en.GetAttributes());
 		BackupClientFileAttributes attr(storeAttr);
-		out << "~" << BoxTimeToISO8601String(attr.GetModificationTime(),
-			useLocalTime);
+		
+		box_time_t NewModificationTime, NewAttrModificationTime;
+		attr.GetModificationTimes(&NewModificationTime,
+			&NewAttrModificationTime);
+		
+		if (showAttrModificationTimes)
+		{
+			newAttributesTime = NewAttrModificationTime;
+		}
+		else
+		{
+			newAttributesTime = NewModificationTime;
+		}
+		
+		if (newAttributesTime == originalTime)
+		{
+			out << "*";
+		}
+		else
+		{
+			out << "~" << BoxTimeToISO8601String(newAttributesTime,
+				useLocalTime);
+		}
 	}
+	else
+	{
+		out << " ";
+	}
 	
 	return out.str();
 }
@@ -550,13 +581,15 @@
 		if(opts[LIST_OPTION_TIMES_UTC])
 		{
 			// Show UTC times...
-			printf("%s ", GetTimeString(*en, false).c_str());
+			printf("%s ", GetTimeString(*en, false,
+				opts[LIST_OPTION_TIMES_ATTRIBS]).c_str());
 		}
 
 		if(opts[LIST_OPTION_TIMES_LOCAL])
 		{
 			// Show local times...
-			printf("%s ", GetTimeString(*en, true).c_str());
+			printf("%s ", GetTimeString(*en, true,
+				opts[LIST_OPTION_TIMES_ATTRIBS]).c_str());
 		}
 		
 		if(opts[LIST_OPTION_DISPLAY_HASH])

Modified: box/trunk/lib/backupclient/BackupClientFileAttributes.cpp
===================================================================
--- box/trunk/lib/backupclient/BackupClientFileAttributes.cpp	2010-02-24 20:12:00 UTC (rev 2635)
+++ box/trunk/lib/backupclient/BackupClientFileAttributes.cpp	2010-02-24 20:28:33 UTC (rev 2636)
@@ -650,13 +650,15 @@
 // --------------------------------------------------------------------------
 //
 // Function
-//		Name:    BackupClientFileAttributes::GetModificationTime()
+//		Name:    BackupClientFileAttributes::GetModificationTimes()
 //		Purpose: Returns the modification time embedded in the
 //			 attributes.
 //		Created: 2010/02/24
 //
 // --------------------------------------------------------------------------
-box_time_t BackupClientFileAttributes::GetModificationTime() const
+void BackupClientFileAttributes::GetModificationTimes(
+	box_time_t *pModificationTime,
+	box_time_t *pAttrModificationTime) const
 {
 	// Got something loaded
 	if(GetSize() <= 0)
@@ -691,7 +693,15 @@
 	// Get pointer to structure
 	attr_StreamFormat *pattr = (attr_StreamFormat*)mpClearAttributes->GetBuffer();
 
-	return box_ntoh64(pattr->ModificationTime);
+	if(pModificationTime)
+	{
+		*pModificationTime = box_ntoh64(pattr->ModificationTime);
+	}
+	
+	if(pAttrModificationTime)
+	{
+		*pAttrModificationTime = box_ntoh64(pattr->AttrModificationTime);
+	}
 }
 
 // --------------------------------------------------------------------------

Modified: box/trunk/lib/backupclient/BackupClientFileAttributes.h
===================================================================
--- box/trunk/lib/backupclient/BackupClientFileAttributes.h	2010-02-24 20:12:00 UTC (rev 2635)
+++ box/trunk/lib/backupclient/BackupClientFileAttributes.h	2010-02-24 20:28:33 UTC (rev 2636)
@@ -47,7 +47,8 @@
 		InodeRefType *pInodeNumber = 0, bool *pHasMultipleLinks = 0);
 	void WriteAttributes(const char *Filename, 
 		bool MakeUserWritable = false) const;
-	box_time_t GetModificationTime() const;
+	void GetModificationTimes(box_time_t *pModificationTime,
+		box_time_t *pAttrModificationTime) const;
 	
 	bool IsSymLink() const;
 




More information about the Boxbackup-commit mailing list