[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