[llvm-commits] CVS: llvm/lib/Bytecode/Archive/ArchiveWriter.cpp

Reid Spencer reid at x10sys.com
Wed Nov 17 08:14:31 PST 2004



Changes in directory llvm/lib/Bytecode/Archive:

ArchiveWriter.cpp updated: 1.5 -> 1.6
---
Log message:

Adjust long file name writing to match BSD 4.4 and Mac OSX style archives.


---
Diffs of the changes:  (+14 -10)

Index: llvm/lib/Bytecode/Archive/ArchiveWriter.cpp
diff -u llvm/lib/Bytecode/Archive/ArchiveWriter.cpp:1.5 llvm/lib/Bytecode/Archive/ArchiveWriter.cpp:1.6
--- llvm/lib/Bytecode/Archive/ArchiveWriter.cpp:1.5	Tue Nov 16 01:05:16 2004
+++ llvm/lib/Bytecode/Archive/ArchiveWriter.cpp	Wed Nov 17 10:14:21 2004
@@ -88,15 +88,6 @@
   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 @@
     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 @@
   // 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.






More information about the llvm-commits mailing list