From c9dae8ced42ff93fc06610ce0136dc133cd507bc Mon Sep 17 00:00:00 2001 From: Aparajita Fishman Date: Thu, 15 Aug 2013 10:35:25 -0400 Subject: [PATCH] Revert "Fixed: nib2cib used a temp file for plutil output instead of using stdout." This reverts commit 4e4fc389d2dacebf347c1d6e95fff91d6e8c2f31. It wasn't working reliably. --- Tools/nib2cib/Converter.j | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/Tools/nib2cib/Converter.j b/Tools/nib2cib/Converter.j index bd38f1886..549a32bdf 100644 --- a/Tools/nib2cib/Converter.j +++ b/Tools/nib2cib/Converter.j @@ -109,7 +109,8 @@ ConverterConversionException = @"ConverterConversionException"; - (CPData)CPCompliantNibDataAtFilePath:(CPString)aFilePath { - var temporaryNibFilePath = ""; + var temporaryNibFilePath = "", + temporaryPlistFilePath = ""; try { @@ -127,14 +128,16 @@ ConverterConversionException = @"ConverterConversionException"; } // Convert from binary plist to XML plist - var p = OS.popen(["/usr/bin/plutil", "-convert", "xml1", temporaryNibFilePath, "-o", "-"]), - plistContents; + var temporaryPlistFilePath = FILE.join("/tmp", FILE.basename(aFilePath) + ".tmp.plist"); - if (p.wait() === 0) - plistContents = p.stdout.read() - else + if (OS.popen(["/usr/bin/plutil", "-convert", "xml1", temporaryNibFilePath, "-o", temporaryPlistFilePath]).wait() === 1) [CPException raise:ConverterConversionException reason:@"Could not convert to xml plist for file: " + aFilePath]; + if (!FILE.isReadable(temporaryPlistFilePath)) + [CPException raise:ConverterConversionException reason:@"Unable to convert nib file."]; + + var plistContents = FILE.read(temporaryPlistFilePath, { charset: "UTF-8" }); + // Minor NS keyed archive to CP keyed archive conversion. // Use Java directly because rhino's string.replace is *so slow*. 4 seconds vs. 1 millisecond. // plistContents = plistContents.replace(/\\s*CF\$UID\s*\<\/key\>/g, "CP$UID"); @@ -153,6 +156,9 @@ ConverterConversionException = @"ConverterConversionException"; { if (temporaryNibFilePath !== "" && FILE.isWritable(temporaryNibFilePath)) FILE.remove(temporaryNibFilePath); + + if (temporaryPlistFilePath !== "" && FILE.isWritable(temporaryPlistFilePath)) + FILE.remove(temporaryPlistFilePath); } return [CPData dataWithRawString:plistContents];