[darwinbuild-changes] [753] branches/PR-7593824/darwinup

source_changes at macosforge.org source_changes at macosforge.org
Tue Mar 9 14:39:03 PST 2010


Revision: 753
          http://trac.macosforge.org/projects/darwinbuild/changeset/753
Author:   wsiegrist at apple.com
Date:     2010-03-09 14:39:02 -0800 (Tue, 09 Mar 2010)
Log Message:
-----------
Add build to Archive object. Strip newlines from PlistBuddy output.

Modified Paths:
--------------
    branches/PR-7593824/darwinup/Archive.cpp
    branches/PR-7593824/darwinup/Archive.h
    branches/PR-7593824/darwinup/DB.cpp
    branches/PR-7593824/darwinup/DB.h
    branches/PR-7593824/darwinup/Depot.cpp
    branches/PR-7593824/darwinup/Utils.cpp

Modified: branches/PR-7593824/darwinup/Archive.cpp
===================================================================
--- branches/PR-7593824/darwinup/Archive.cpp	2010-03-09 21:55:54 UTC (rev 752)
+++ branches/PR-7593824/darwinup/Archive.cpp	2010-03-09 22:39:02 UTC (rev 753)
@@ -53,11 +53,13 @@
 	m_date_installed = time(NULL);
 }
 
-Archive::Archive(uint64_t serial, uuid_t uuid, const char* name, const char* path, uint64_t info, time_t date_installed) {
+Archive::Archive(uint64_t serial, uuid_t uuid, const char* name, const char* path, 
+				 uint64_t info, time_t date_installed, const char* build) {
 	m_serial = serial;
 	uuid_copy(m_uuid, uuid);
 	m_name = name ? strdup(name) : NULL;
 	m_path = path ? strdup(path) : NULL;
+	m_build = build ? strdup(build) : NULL;
 	m_info = info;
 	m_date_installed = date_installed;
 }
@@ -66,12 +68,14 @@
 Archive::~Archive() {
 	if (m_path) free(m_path);
 	if (m_name) free(m_name);
+	if (m_build) free(m_build);
 }
 
 uint64_t	Archive::serial()		{ return m_serial; }
 uint8_t*	Archive::uuid()			{ return m_uuid; }
 const char*	Archive::name()			{ return m_name; }
 const char*	Archive::path()			{ return m_path; }
+const char*	Archive::build()		{ return m_build; }
 uint64_t	Archive::info()			{ return m_info; }
 time_t		Archive::date_installed()	{ return m_date_installed; }
 

Modified: branches/PR-7593824/darwinup/Archive.h
===================================================================
--- branches/PR-7593824/darwinup/Archive.h	2010-03-09 21:55:54 UTC (rev 752)
+++ branches/PR-7593824/darwinup/Archive.h	2010-03-09 22:39:02 UTC (rev 753)
@@ -97,13 +97,16 @@
 	// Do not modify or free(3).
 	virtual const char* path();
 	
+	// the OS build this archive was installed onto
+	virtual const char* build();
+	
 	// ARCHIVE_INFO flags.
 	virtual uint64_t info();
 	
 	// The epoch seconds when the archive was installed.
 	virtual time_t date_installed();
-
-
+	
+	
 	////
 	//  Member functions
 	////
@@ -130,13 +133,16 @@
 
 	protected:
 
-	// Constructor for subclasses and Depot to use when unserializing an archive from the database.
-	Archive(uint64_t serial, uuid_t uuid, const char* name, const char* path, uint64_t info, time_t date_installed);
+	// Constructor for subclasses and Depot to use when 
+	//  unserializing an archive from the database.
+	Archive(uint64_t serial, uuid_t uuid, const char* name, const char* path, 
+			uint64_t info, time_t date_installed, const char* build);
 	
 	uint64_t	m_serial;
 	uuid_t		m_uuid;
 	char*		m_name;
 	char*		m_path;
+	char*       m_build;
 	uint64_t	m_info;
 	time_t		m_date_installed;
 	

Modified: branches/PR-7593824/darwinup/DB.cpp
===================================================================
--- branches/PR-7593824/darwinup/DB.cpp	2010-03-09 21:55:54 UTC (rev 752)
+++ branches/PR-7593824/darwinup/DB.cpp	2010-03-09 22:39:02 UTC (rev 753)
@@ -112,7 +112,7 @@
 }
 
 uint64_t DarwinupDatabase::insert_archive(uuid_t uuid, uint32_t info, const char* name, 
-										  time_t date_added, char* build) {
+										  time_t date_added, const char* build) {
 	
 	int res = this->insert(this->m_archives_table,
 						   (uint8_t*)uuid,
@@ -406,8 +406,10 @@
 	memcpy(&date_added, &data[this->archive_offset(3)], sizeof(time_t));
 	uint64_t info;
 	memcpy(&info, &data[this->archive_offset(5)], sizeof(uint64_t));
+	char* build;
+	memcpy(&build, &data[this->archive_offset(6)], sizeof(char*));
 
-	Archive* archive = new Archive(serial, *uuid, name, NULL, info, date_added);
+	Archive* archive = new Archive(serial, *uuid, name, NULL, info, date_added, build);
 	this->m_archives_table->free_result(data);
 	return archive;
 }

Modified: branches/PR-7593824/darwinup/DB.h
===================================================================
--- branches/PR-7593824/darwinup/DB.h	2010-03-09 21:55:54 UTC (rev 752)
+++ branches/PR-7593824/darwinup/DB.h	2010-03-09 22:39:02 UTC (rev 753)
@@ -74,7 +74,8 @@
 	int      deactivate_archive(uint64_t serial);
 	int      update_archive(uint64_t serial, uuid_t uuid, const char* name,
 							time_t date_added, uint32_t active, uint32_t info);
-	uint64_t insert_archive(uuid_t uuid, uint32_t info, const char* name, time_t date, char* build);
+	uint64_t insert_archive(uuid_t uuid, uint32_t info, const char* name, 
+							time_t date, const char* build);
 	int      delete_empty_archives();
 	int      delete_archive(Archive* archive);
 	int      delete_archive(uint64_t serial);
@@ -83,7 +84,8 @@
 	File*    make_file(uint8_t* data);
 	int      get_next_file(uint8_t** data, File* file, file_starseded_t star);
 	int      get_file_serials(uint64_t** serials, uint32_t* count);
-	int      get_file_serial_from_archive(Archive* archive, const char* path, uint64_t** serial);
+	int      get_file_serial_from_archive(Archive* archive, const char* path, 
+										  uint64_t** serial);
 	int      get_files(uint8_t*** data, uint32_t* count, Archive* archive);
 	int      file_offset(int column);
 	int      update_file(uint64_t serial, Archive* archive, uint32_t info, mode_t mode, 

Modified: branches/PR-7593824/darwinup/Depot.cpp
===================================================================
--- branches/PR-7593824/darwinup/Depot.cpp	2010-03-09 21:55:54 UTC (rev 752)
+++ branches/PR-7593824/darwinup/Depot.cpp	2010-03-09 22:39:02 UTC (rev 753)
@@ -634,6 +634,11 @@
 	int res = 0;
 	Archive* rollback = new RollbackArchive();
 
+	if (this->m_build) {
+		rollback->m_build = strdup(this->m_build);
+		archive->m_build = strdup(this->m_build);
+	}
+	
 	assert(rollback != NULL);
 	assert(archive != NULL);
 
@@ -1114,7 +1119,7 @@
 											 archive->info(),
 											 archive->name(),
 											 archive->date_installed(),
-											 m_build);
+											 archive->build());
 	return archive->m_serial == 0;
 }
 

Modified: branches/PR-7593824/darwinup/Utils.cpp
===================================================================
--- branches/PR-7593824/darwinup/Utils.cpp	2010-03-09 21:55:54 UTC (rev 752)
+++ branches/PR-7593824/darwinup/Utils.cpp	2010-03-09 22:39:02 UTC (rev 753)
@@ -320,13 +320,15 @@
 	res = 1;
 	while (res > 0 && res < 16) {
 		res = read(pfd[0], *build, 16);
+		// strip newline
+		if (res > 1 && (*build)[res-1] == '\n') (*build)[res-1] = '\0';
 	}
 	close(pfd[0]);
 
 	if (res == 0) return res; // success
 	
 	if (res == -1) {
-		fprintf(stderr, "Error: failed to read build from xpath.\n");
+		fprintf(stderr, "Error: failed to read build from plist.\n");
 		return res;
 	}
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/darwinbuild-changes/attachments/20100309/132041a3/attachment.html>


More information about the darwinbuild-changes mailing list