summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/Archive/ArchiveWriter.cpp24
-rw-r--r--lib/Bytecode/Archive/ArchiveWriter.cpp24
2 files changed, 28 insertions, 20 deletions
diff --git a/lib/Archive/ArchiveWriter.cpp b/lib/Archive/ArchiveWriter.cpp
index 636d632b664..545f4eee6eb 100644
--- a/lib/Archive/ArchiveWriter.cpp
+++ b/lib/Archive/ArchiveWriter.cpp
@@ -88,15 +88,6 @@ Archive::fillHeader(const ArchiveMember &mbr, ArchiveMemberHeader& hdr,
sprintf(buffer, "%-6u", mbr.getGroup());
memcpy(hdr.gid,buffer,6);
- // Set the size field
- if (sz < 0) {
- buffer[0] = '-';
- sprintf(&buffer[1],"%-9u",(unsigned)-sz);
- } else {
- sprintf(buffer, "%-10u", (unsigned)sz);
- }
- memcpy(hdr.size,buffer,10);
-
// Set the last modification date
uint64_t secondsSinceEpoch = mbr.getModTime().toEpochTime();
sprintf(buffer,"%-12u", unsigned(secondsSinceEpoch));
@@ -130,8 +121,22 @@ Archive::fillHeader(const ArchiveMember &mbr, ArchiveMemberHeader& hdr,
std::string nm = "#1/";
nm += utostr(mbrPath.length());
nm.copy(hdr.name,nm.length());
+ if (sz < 0)
+ sz -= mbrPath.length();
+ else
+ sz += mbrPath.length();
writeLongName = true;
}
+
+ // Set the size field
+ if (sz < 0) {
+ buffer[0] = '-';
+ sprintf(&buffer[1],"%-9u",(unsigned)-sz);
+ } else {
+ sprintf(buffer, "%-10u", (unsigned)sz);
+ }
+ memcpy(hdr.size,buffer,10);
+
return writeLongName;
}
@@ -266,7 +271,6 @@ Archive::writeMember(
// Write the long filename if its long
if (writeLongName) {
ARFile << member.getPath().c_str();
- ARFile << '\n';
}
// Make sure we write the compressed bytecode magic number if we should.
diff --git a/lib/Bytecode/Archive/ArchiveWriter.cpp b/lib/Bytecode/Archive/ArchiveWriter.cpp
index 636d632b664..545f4eee6eb 100644
--- a/lib/Bytecode/Archive/ArchiveWriter.cpp
+++ b/lib/Bytecode/Archive/ArchiveWriter.cpp
@@ -88,15 +88,6 @@ Archive::fillHeader(const ArchiveMember &mbr, ArchiveMemberHeader& hdr,
sprintf(buffer, "%-6u", mbr.getGroup());
memcpy(hdr.gid,buffer,6);
- // Set the size field
- if (sz < 0) {
- buffer[0] = '-';
- sprintf(&buffer[1],"%-9u",(unsigned)-sz);
- } else {
- sprintf(buffer, "%-10u", (unsigned)sz);
- }
- memcpy(hdr.size,buffer,10);
-
// Set the last modification date
uint64_t secondsSinceEpoch = mbr.getModTime().toEpochTime();
sprintf(buffer,"%-12u", unsigned(secondsSinceEpoch));
@@ -130,8 +121,22 @@ Archive::fillHeader(const ArchiveMember &mbr, ArchiveMemberHeader& hdr,
std::string nm = "#1/";
nm += utostr(mbrPath.length());
nm.copy(hdr.name,nm.length());
+ if (sz < 0)
+ sz -= mbrPath.length();
+ else
+ sz += mbrPath.length();
writeLongName = true;
}
+
+ // Set the size field
+ if (sz < 0) {
+ buffer[0] = '-';
+ sprintf(&buffer[1],"%-9u",(unsigned)-sz);
+ } else {
+ sprintf(buffer, "%-10u", (unsigned)sz);
+ }
+ memcpy(hdr.size,buffer,10);
+
return writeLongName;
}
@@ -266,7 +271,6 @@ Archive::writeMember(
// Write the long filename if its long
if (writeLongName) {
ARFile << member.getPath().c_str();
- ARFile << '\n';
}
// Make sure we write the compressed bytecode magic number if we should.