Merge "Issue #1835 - update LDM to 6.11.2" into omaha_13.4.1

Former-commit-id: e67819dbdc [formerly 18a660f406 [formerly a7a457820a74b1d9810b7e4112ede8885d5c7905]]
Former-commit-id: 18a660f406
Former-commit-id: f87951189b
This commit is contained in:
Greg Armendariz 2013-04-17 12:03:22 -05:00 committed by Gerrit Code Review
commit 2872e384ed
75 changed files with 1253 additions and 970 deletions

View file

@ -0,0 +1,608 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?fileVersion 4.0.0?>
<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
<storageModule moduleId="org.eclipse.cdt.core.settings">
<cconfiguration id="cdt.managedbuild.config.gnu.exe.release.1726302599">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.exe.release.1726302599" moduleId="org.eclipse.cdt.core.settings" name="i386-pc-linux-gnu.release">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="Produces a 32-bit decrypt_file" id="cdt.managedbuild.config.gnu.exe.release.1726302599" name="i386-pc-linux-gnu.release" parent="cdt.managedbuild.config.gnu.exe.release">
<folderInfo id="cdt.managedbuild.config.gnu.exe.release.1726302599." name="/" resourcePath="">
<toolChain id="cdt.managedbuild.toolchain.gnu.exe.release.896488161" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.exe.release">
<targetPlatform id="cdt.managedbuild.target.gnu.platform.exe.release.1488367792" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.exe.release"/>
<builder buildPath="${workspace_loc:/decrypt_file/Release}" id="cdt.managedbuild.target.gnu.builder.exe.release.302007559" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="cdt.managedbuild.target.gnu.builder.exe.release"/>
<tool id="cdt.managedbuild.tool.gnu.archiver.base.159950060" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.exe.release.2060051765" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.exe.release">
<option id="gnu.cpp.compiler.exe.release.option.optimization.level.598404798" name="Optimization Level" superClass="gnu.cpp.compiler.exe.release.option.optimization.level" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>
<option id="gnu.cpp.compiler.exe.release.option.debugging.level.747954349" name="Debug Level" superClass="gnu.cpp.compiler.exe.release.option.debugging.level" value="gnu.cpp.compiler.debugging.level.none" valueType="enumerated"/>
<option id="gnu.cpp.compiler.option.other.other.580310774" name="Other flags" superClass="gnu.cpp.compiler.option.other.other" value="-c -fmessage-length=0" valueType="string"/>
<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1610189555" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
</tool>
<tool id="cdt.managedbuild.tool.gnu.c.compiler.exe.release.521750950" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.exe.release">
<option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.exe.release.option.optimization.level.2029742981" name="Optimization Level" superClass="gnu.c.compiler.exe.release.option.optimization.level" valueType="enumerated"/>
<option id="gnu.c.compiler.exe.release.option.debugging.level.1132375723" name="Debug Level" superClass="gnu.c.compiler.exe.release.option.debugging.level" value="gnu.c.debugging.level.none" valueType="enumerated"/>
<option id="gnu.c.compiler.option.misc.other.1977118561" name="Other flags" superClass="gnu.c.compiler.option.misc.other" value="-c -fmessage-length=0 -m32" valueType="string"/>
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1517135245" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
</tool>
<tool id="cdt.managedbuild.tool.gnu.c.linker.exe.release.1611021867" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.exe.release"/>
<tool id="cdt.managedbuild.tool.gnu.cpp.linker.exe.release.366002084" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.exe.release">
<option id="gnu.cpp.link.option.flags.2025690636" superClass="gnu.cpp.link.option.flags" value="-m32" valueType="string"/>
<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1545704474" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
</tool>
<tool id="cdt.managedbuild.tool.gnu.assembler.exe.release.128060262" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.exe.release">
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.1334882287" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
</tool>
</toolChain>
</folderInfo>
</configuration>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="makefileGenerator">
<runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.release.1726302599;cdt.managedbuild.config.gnu.exe.release.1726302599.;cdt.managedbuild.tool.gnu.cpp.compiler.exe.release.2060051765;cdt.managedbuild.tool.gnu.cpp.compiler.input.1610189555">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP"/>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="makefileGenerator">
<runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.release.1726302599;cdt.managedbuild.config.gnu.exe.release.1726302599.;cdt.managedbuild.tool.gnu.c.compiler.exe.release.521750950;cdt.managedbuild.tool.gnu.c.compiler.input.1517135245">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="makefileGenerator">
<runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
</scannerConfigBuildInfo>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
</cconfiguration>
<cconfiguration id="cdt.managedbuild.config.gnu.exe.release.1726302599.1113623045">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.exe.release.1726302599.1113623045" moduleId="org.eclipse.cdt.core.settings" name="x86_64-linux-gnu.release">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="Produces a 64-bit decrypt_file" id="cdt.managedbuild.config.gnu.exe.release.1726302599.1113623045" name="x86_64-linux-gnu.release" parent="cdt.managedbuild.config.gnu.exe.release">
<folderInfo id="cdt.managedbuild.config.gnu.exe.release.1726302599.1113623045." name="/" resourcePath="">
<toolChain id="cdt.managedbuild.toolchain.gnu.exe.release.1922483121" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.exe.release">
<targetPlatform id="cdt.managedbuild.target.gnu.platform.exe.release.1838936007" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.exe.release"/>
<builder buildPath="${workspace_loc:/decrypt_file/Release}" id="cdt.managedbuild.target.gnu.builder.exe.release.502462364" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="cdt.managedbuild.target.gnu.builder.exe.release"/>
<tool id="cdt.managedbuild.tool.gnu.archiver.base.1329051252" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.exe.release.581544220" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.exe.release">
<option id="gnu.cpp.compiler.exe.release.option.optimization.level.1152278610" name="Optimization Level" superClass="gnu.cpp.compiler.exe.release.option.optimization.level" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>
<option id="gnu.cpp.compiler.exe.release.option.debugging.level.1580318529" name="Debug Level" superClass="gnu.cpp.compiler.exe.release.option.debugging.level" value="gnu.cpp.compiler.debugging.level.none" valueType="enumerated"/>
<option id="gnu.cpp.compiler.option.other.other.835871748" name="Other flags" superClass="gnu.cpp.compiler.option.other.other" value="-c -fmessage-length=0" valueType="string"/>
<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.894931344" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
</tool>
<tool id="cdt.managedbuild.tool.gnu.c.compiler.exe.release.500180100" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.exe.release">
<option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.exe.release.option.optimization.level.1662302487" name="Optimization Level" superClass="gnu.c.compiler.exe.release.option.optimization.level" valueType="enumerated"/>
<option id="gnu.c.compiler.exe.release.option.debugging.level.1208671985" name="Debug Level" superClass="gnu.c.compiler.exe.release.option.debugging.level" value="gnu.c.debugging.level.none" valueType="enumerated"/>
<option id="gnu.c.compiler.option.misc.other.1415510630" name="Other flags" superClass="gnu.c.compiler.option.misc.other" value="-c -fmessage-length=0 -m64" valueType="string"/>
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1801104860" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
</tool>
<tool id="cdt.managedbuild.tool.gnu.c.linker.exe.release.37481227" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.exe.release"/>
<tool id="cdt.managedbuild.tool.gnu.cpp.linker.exe.release.876175372" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.exe.release">
<option id="gnu.cpp.link.option.flags.1838726179" superClass="gnu.cpp.link.option.flags" value="-m64" valueType="string"/>
<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1596156272" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
</tool>
<tool id="cdt.managedbuild.tool.gnu.assembler.exe.release.712228969" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.exe.release">
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.389779517" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
</tool>
</toolChain>
</folderInfo>
</configuration>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="makefileGenerator">
<runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.release.1726302599;cdt.managedbuild.config.gnu.exe.release.1726302599.;cdt.managedbuild.tool.gnu.cpp.compiler.exe.release.2060051765;cdt.managedbuild.tool.gnu.cpp.compiler.input.1610189555">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP"/>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="makefileGenerator">
<runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.release.1726302599;cdt.managedbuild.config.gnu.exe.release.1726302599.;cdt.managedbuild.tool.gnu.c.compiler.exe.release.521750950;cdt.managedbuild.tool.gnu.c.compiler.input.1517135245">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="makefileGenerator">
<runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
</scannerConfigBuildInfo>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<project id="decrypt_file.cdt.managedbuild.target.gnu.exe.382847340" name="Executable" projectType="cdt.managedbuild.target.gnu.exe"/>
</storageModule>
</cproject>

View file

@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>decrypt_file</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
<triggers>clean,full,incremental,</triggers>
<arguments>
<dictionary>
<key>?name?</key>
<value></value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.append_environment</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.autoBuildTarget</key>
<value>all</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildArguments</key>
<value></value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildCommand</key>
<value>make</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildLocation</key>
<value>${workspace_loc:/decrypt_file/Release}</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
<value>clean</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.contents</key>
<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
<value>false</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableFullBuild</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.fullBuildTarget</key>
<value>all</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.stopOnError</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
<value>true</value>
</dictionary>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
<triggers>full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.core.ccnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
</natures>
</projectDescription>

View file

@ -0,0 +1,5 @@
To compile the file in decrypt_file, type the following at a command line
and copy the resulting executable to the decoders folder in the
LDM install:
cc -D_GNU_SOURCE -o decrypt_file decrypt_file.c

View file

@ -0,0 +1,268 @@
/* -----------------------------------------------------------------------------
File name:
decrypt_file.c
Compilation:
cc -D_GNU_SOURCE -o decrypt_file decrypt_file.c
Requirements:
- cruft must be installed
- the decryption key must be in ~/.key
File description:
This program attempts to decrypt a stream of data that has been encrypted
with cruft.
This program reads data from stdin. It assumes that there is some kind of
header before the start of the cruft header that must be stripped, though
it will still work if there is no header.
If the cruft header is not found within the first 128 bytes, then the input
data is simply copied to the output file since decryption is not needed. If
a cruft header is found, then the data is piped to cruft for decryption and
is written to the file name matching the template specified on the command line.
This program takes one argument: the output file name template that is used
by the mkstemp system call to open a file with a unique file name. The
string (".XXXXXX") is appended by this program as required by mkstemp.
Any program looking for files to process that are output by this program
should look at the file permissions before attempting a read. When this
program has finished writing the output file, it will change permissions to
0666.
Command line:
decrypt_file <output_file_name>
Author:
Brian M. Rapp 03/19/2009
----------------------------------------------------------------------------- */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>
#define MAX_BUF_SIZE 4096 // This must not be greater than PIPE_BUF
// as defined in the kernel header file
// /usr/src/linux/include/linux/limits.h
#define HDR_DEPTH 128 // The cruft header must occur within 128
// bytes of the beginning of the file.
#define ENCRYPT_PROGRAM "cruft" // The code may require modification if
// a different decryption tool is used.
#define INSERT_PROGRAM "pqinsert" // LDM tool to insert data into the product
// queue
#define CRUFT_HDR_SIZE 9 // Cruft header length (see cruft_hdr below)
#define SBN_HDR_SIZE 24 // Length of the SBN header
#define WMO_HDR_SIZE 21 // Length of the WMO header (TTAAii CCCC DDHHMM\r\r\n)
#define OPEN_FILE_PERMS (S_IRUSR | S_IWUSR)
#define DONE_FILE_PERMS (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH)
#define DIR_PERMS 0777 // the permissions for the directories created
#define DECRYPT_FLAG_OFFSET 5 // Offset to NWSTG CCB encryption flag
char *progname;
char cruft_hdr[] = {253, 253, 253, 253, 253, 253, 253, 253, 253};
/* -------------------------------------------------------------------------- */
void usage (char *exename) {
//fprintf (stderr, "Usage: %s output_file_path feed_type\n", exename); // no feed_type
fprintf (stderr, "Usage: %s output_file_path \n", exename);
}
/* -------------------------------------------------------------------------- */
int main (int argc, char **argv) {
char *out_template; // Input as the file name template from the command
// line. This is modified by mkstemp to the output
// file name.
int out_fd; // Output file descriptor returned by call to mkstemp
FILE *out_pipe; // File pointer returned by call to popen for decryption
size_t len; // Length of buffers read from STDIN
size_t wlen; // Length of the write buffer
size_t count; // Number of items written by calls to fwrite
char file_buf[MAX_BUF_SIZE]; // Input buffer from STDIN
char *hdr_ptr; // Pointer to start of cruft header within file_buf
char command_line[128]; // Command line for starting cruft via popen
char pqinsert_line[128]; // PQInsert Line
char *sbn_hdr_ptr; // Pointer to the start of the 24-byte SBN header in each product
char *slash_ptr; // pointer for the slashes in the path
progname = argv[0]; // Get the program name
if (argc != 2) { // Only 1 parameter - the template for the output file name.
usage (argv[0]);
exit (1);
}
len = (size_t) strlen (argv[1]) + 7 + 1; // Allocate 7 extra bytes for the ".XXXXXX"
// plus 1 for the terminating nul
if ((out_template = malloc (len)) == NULL) { // Try to malloc memory for output file name
fprintf (stderr, "%s: Error \"%s\" while allocating memory for output template -- exiting\n",
progname, strerror (errno));
exit (errno);
}
sprintf (out_template, "%s.XXXXXX", argv[1]); // Output file name template
// the reasons the DIR_PERMS are 777 is because of NFS permission issues with mkdir
// make sure all of the intervening directories in out_template actually exist
slash_ptr = strchr ( out_template, '/' );
while ( slash_ptr != NULL )
{
*slash_ptr = '\0'; // truncate at the slash
if ( strlen( out_template ) > 0 ) // corner case with a leading slash
{
if ( mkdir ( out_template, DIR_PERMS ) == - 1 && errno != EEXIST )
{
// it failed but not because the directory already exists
fprintf ( stderr, "mkdir errno %d\n", errno );
if ( errno == EPERM )
{
fprintf ( stderr, "mkdir permission error\n" );
}
exit (errno);
}
}
*slash_ptr = '/'; // put the slash back
++slash_ptr;
slash_ptr = strchr ( slash_ptr, '/' ); // find the next slash
}
if ((out_fd = mkstemp (out_template)) == -1) { // Create and open a unique temporary file for output
fprintf (stderr, "%s: Error \"%s\" creating temporary file for template %s -- exiting\n",
progname, strerror (errno), out_template);
exit (errno);
}
// Try to read some data from STDIN
if ((len = read (STDIN_FILENO, file_buf, MAX_BUF_SIZE)) < 0) { // Error if read return negative value -- clean up
fprintf (stderr, "%s: Error \"%s\" reading from STDIN -- exiting\n",
progname, strerror (errno));
close (out_fd);
unlink (out_template);
exit (errno);
} else if (len == 0) { // Input data stream is empty -- clean up
fprintf (stderr, "%s: File is empty -- ignoring\n", progname);
close (out_fd);
unlink (out_template);
exit (0);
}
// If we're here, then we read some bytes from STDIN.
// If the input buffer is less than 128 bytes, then only search through the number of bytes read
if ((hdr_ptr = memmem (file_buf, (len < HDR_DEPTH) ? len : HDR_DEPTH, cruft_hdr, CRUFT_HDR_SIZE)) == NULL) {
// then there is no cruft header within the first HDR_DEPTH bytes
if ((wlen = write (out_fd, file_buf, len)) != len) { // Try to write the input buffer to the output file
fprintf (stderr, "%s: Error \"%s\" writing to %s -- exiting\n", progname, strerror (errno), out_template);
close (out_fd);
unlink (out_template);
exit (errno);
}
// Read the rest of the input data and write it to the output file, exit on error
while ((len = read (STDIN_FILENO, file_buf, MAX_BUF_SIZE)) > 0) {
if ((wlen = write (out_fd, file_buf, len)) != len) {
fprintf (stderr, "%s: Error \"%s\" writing to %s -- exiting\n", progname, strerror (errno), out_template);
close (out_fd);
unlink (out_template);
exit (errno);
}
}
if (len < 0) { // Uh oh, there was an error reading from STDIN
fprintf (stderr, "%s: Error \"%s\" reading from STDIN -- exiting\n",
progname, strerror (errno));
close (out_fd);
unlink (out_template);
exit (errno);
}
close (out_fd); // Close the output file
} else { // Found a cruft header
// Write the 24-byte SBN header to the output file before closing it. Cruft will append to this file.
sbn_hdr_ptr = hdr_ptr - (WMO_HDR_SIZE + SBN_HDR_SIZE);
// Change compression flag from 'E' to 'U'
if (file_buf[0] == 0x40) {
if (file_buf[DECRYPT_FLAG_OFFSET] == 'E') {
file_buf[DECRYPT_FLAG_OFFSET] = 'U';
}
}
if ((wlen = write (out_fd, sbn_hdr_ptr, SBN_HDR_SIZE)) != SBN_HDR_SIZE) {
fprintf (stderr, "%s: Error \"%s\" writing SBN header to %s -- exiting\n", progname, strerror (errno), out_template);
close (out_fd);
unlink (out_template);
exit (errno);
}
close (out_fd);
if (chmod (out_template, OPEN_FILE_PERMS) < 0) { // Set file perms to 0600 so cruft can write to it.
fprintf (stderr, "%s: Error \"%s\" changing file permissions on %s to %od\n",
progname, strerror (errno), out_template, DONE_FILE_PERMS);
}
sprintf (command_line, "%s >> %s", ENCRYPT_PROGRAM, out_template); // Create pipe command line
if ((out_pipe = popen (command_line, "w")) == NULL) { // Try to open pipe for output to cruft
fprintf (stderr, "%s: Error \"%s\" while attempting to open pipe to %s -- exiting\n",
progname, strerror (errno), command_line);
unlink (out_template); // Clean up mess
exit (errno);
}
wlen = file_buf + len - hdr_ptr; // Calculate the length of the output buffer from the start of the cruft header
if ((count = fwrite (hdr_ptr, wlen, 1, out_pipe)) != 1) { // Try to pipe the output buffer to cruft
fprintf (stderr, "%s: Error \"%s\" writing to output pipe -- only wrote %d items exiting\n",
progname, strerror (errno), (int) count);
fclose (out_pipe);
unlink (out_template); // Clean up mess
exit (errno);
}
while ((len = read (STDIN_FILENO, file_buf, MAX_BUF_SIZE)) > 0) {
if ((count = fwrite (file_buf, len, 1, out_pipe)) != 1) {
fprintf (stderr, "%s: Error \"%s\" writing to output pipe -- only wrote %d items exiting\n",
progname, strerror (errno), (int) count);
fclose (out_pipe);
unlink (out_template); // Clean up mess
exit (errno);
}
}
if (len < 0) { // Uh oh, there was an error reading from STDIN
fprintf (stderr, "%s: Error \"%s\" reading from STDIN -- exiting\n", progname, strerror (errno));
fclose (out_pipe);
unlink (out_template); // Clean up the mess
exit (errno);
}
fclose (out_pipe);
sprintf(pqinsert_line, "%s %s", INSERT_PROGRAM, out_template);
if((system(pqinsert_line)) > 0) {
fprintf (stderr, "%s: Error \"%s\" running pqinsert -- file not inserted into data stream\n", progname, strerror (errno));
}
}
// Change file permissions on output file to 0666 as a signal to anyone watching that the file is available for access now
if (chmod (out_template, DONE_FILE_PERMS) < 0) {
fprintf (stderr, "%s: Error \"%s\" changing file permissions on %s to %od\n", progname, strerror (errno), out_template, DONE_FILE_PERMS);
}
exit (0);
}

View file

@ -1,13 +1,16 @@
%define _ldm_version 6.11.2
%define _ldm_src_tar awips2-ldm.%{_ldm_version}.tar.gz
#
# AWIPS II LDM Spec File
#
%define __prelink_undo_cmd %{nil}
Name: awips2-ldm
Summary: AWIPS II LDM Distribution
Version: 6.8.1
Release: 33
Version: %{_ldm_version}
Release: 1
Group: AWIPSII
BuildRoot: /tmp
BuildArch: noarch
URL: N/A
License: N/A
Distribution: N/A
@ -15,6 +18,8 @@ Vendor: Raytheon
Packager: Bryan Kowal
AutoReq: no
Requires: qpid-cpp-client = 0.7.946106-28.el5.centos.1
Requires: qpid-cpp-client-devel = 0.7.946106-28.el5.centos.1
provides: awips2-ldm
provides: awips2-base-component
@ -22,179 +27,167 @@ provides: awips2-base-component
AWIPS II LDM Distribution - Contains AWIPS II LDM.
%prep
# Verify That The User Has Specified A BuildRoot.
if [ "${RPM_BUILD_ROOT}" = "/tmp" ]
then
echo "An Actual BuildRoot Must Be Specified. Use The --buildroot Parameter."
echo "Unable To Continue ... Terminating"
# Ensure that a "buildroot" has been specified.
if [ "%{_build_root}" = "" ]; then
echo "ERROR: A BuildRoot has not been specified."
echo "FATAL: Unable to Continue ... Terminating."
exit 1
fi
LDM_BUILD_DIR="/tmp/awips2-${USER}/ldm-build"
LDM_TAR_DIR="rpms/awips2.core/Installer.ldm/src"
LDM_TAR_FILE="ldm-6.8.1.tar.gz"
if [ -d ${RPM_BUILD_ROOT} ]; then
rm -rf ${RPM_BUILD_ROOT}
if [ -d %{_build_root} ]; then
rm -rf %{_build_root}
fi
/bin/mkdir -p %{_build_root}
if [ $? -ne 0 ]; then
exit 1
fi
fi
if [ -d ${LDM_BUILD_DIR} ]; then
rm -rf ${LDM_BUILD_DIR}
fi
mkdir -p ${LDM_BUILD_DIR}
if [ -d ${RPM_BUILD_ROOT}/usr/local/ldm]; then
rm -rf ${RPM_BUILD_ROOT}/usr/local/ldm-6.8.1/ldm-6.8.1
fi
mkdir -p ${RPM_BUILD_ROOT}/usr/local/ldm-6.8.1/ldm-6.8.1
# We cannot safely build ldm on a machine awips2-ldm
# is already installed on.
if rpm -q awips2-ldm
then
echo "ERROR: the awips2-ldm rpm must not be built"
echo " on a machine with an awips2-ldm"
echo " installation."
echo "Unable To Continue ... Terminating."
# create the ldm directory
/bin/mkdir -p %{_build_root}/usr/local/ldm-%{_ldm_version}/SOURCES
if [ $? -ne 0 ]; then
exit 1
fi
if [ -d /usr/local/ldm-6.8.1 ]; then
rm -rf /usr/local/ldm-6.8.1
# create profile directory and ld directory
/bin/mkdir -p %{_build_root}/etc/ld.so.conf.d
if [ $? -ne 0 ]; then
exit 1
fi
/bin/mkdir -p %{_build_root}/etc/profile.d
if [ $? -ne 0 ]; then
exit 1
fi
mkdir -p /usr/local/ldm-6.8.1
# Copy the src to the build directory.
cp %{_baseline_workspace}/${LDM_TAR_DIR}/${LDM_TAR_FILE} \
${LDM_BUILD_DIR}
# Copy patch0 to the build directory.
cp %{_baseline_workspace}/${LDM_TAR_DIR}/ldm-6.8.1.patch0 \
${LDM_BUILD_DIR}
# Copy patch1 to the build directory.
cp %{_baseline_workspace}/${LDM_TAR_DIR}/ldm-6.8.1.patch1 \
${LDM_BUILD_DIR}
# Copy patch2 to the build directory.
cp %{_baseline_workspace}/${LDM_TAR_DIR}/ldm-6.8.1.patch2 \
${LDM_BUILD_DIR}
cd ${LDM_BUILD_DIR}
tar -xvf ${LDM_TAR_FILE}
# remove the copied tar file
rm -f ${LDM_TAR_FILE}
cd ldm-6.8.1
patch -p1 < ../ldm-6.8.1.patch0
# remove the patch file
rm -f ../ldm-6.8.1.patch0
patch -p1 < ../ldm-6.8.1.patch1
# remove the patch file
rm -f ../ldm-6.8.1.patch1
patch -p1 < ../ldm-6.8.1.patch2
# remove the patch file.
rm -f ../ldm-6.8.1.patch2
%build
LDM_BUILD_DIR="/tmp/awips2-${USER}/ldm-build"
LDM_TAR_DIR="rpms/awips2.core/Installer.ldm/src"
LDM_TAR_FILE="ldm-6.8.1.tar.gz"
# go to the ldm src directory.
cd ${LDM_BUILD_DIR}/ldm-6.8.1/src
# set LDMHOME
export LDMHOME=/usr/local/ldm-6.8.1
# run the configure script
./configure \
--prefix=${RPM_BUILD_ROOT}/usr/local/ldm-6.8.1/ldm-6.8.1
RC="$?"
if [ ! "${RC}" = "0" ]; then
echo "ERROR: configure of ldm-6.8.1 has failed."
echo "Unable To Continue ... Terminating."
exit 1
fi
# make ldm
make clean
make
RC="$?"
if [ ! "${RC}" = "0" ]; then
echo "ERROR: make of ldm-6.8.1 has failed."
echo "Unable To Continue ... Terminating."
exit 1
fi
%install
LDM_BUILD_DIR="/tmp/awips2-${USER}/ldm-build"
_ldm_destination=%{_build_root}/usr/local/ldm-%{_ldm_version}
_ldm_destination_source=${_ldm_destination}/SOURCES
cd ${LDM_BUILD_DIR}/ldm-6.8.1/src
make install
RC="$?"
if [ ! "${RC}" = "0" ]; then
echo "ERROR: install of ldm-6.8.1 has failed."
echo "Unable To Continue ... Terminating."
_NATIVELIB_PROJECTS=( 'edexBridge' 'decrypt_file' )
_RPM_directory=%{_baseline_workspace}/rpms
_Installer_ldm=${_RPM_directory}/awips2.core/Installer.ldm
# copy the ldm source to the ldm destination directory.
/bin/cp ${_Installer_ldm}/src/%{_ldm_src_tar} ${_ldm_destination_source}
if [ $? -ne 0 ]; then
exit 1
fi
# package nativelib projects
pushd . > /dev/null 2>&1
cd %{_baseline_workspace}
if [ $? -ne 0 ]; then
exit 1
fi
for nativeProject in ${_NATIVELIB_PROJECTS[*]};
do
/bin/tar -cf ${nativeProject}.tar ${nativeProject}
if [ $? -ne 0 ]; then
exit 1
fi
# move nativeLib to LDM SOURCES for post-installation
# build.
/bin/mv ${nativeProject}.tar \
${_ldm_destination_source}/${nativeProject}.tar
if [ $? -ne 0 ]; then
exit 1
fi
done
popd > /dev/null 2>&1
# copy ldm "patches" to SOURCES for post-installation
# unpacking.
cd ${_Installer_ldm}/patch
if [ $? -ne 0 ]; then
exit 1
fi
_PATCH_DIRS=( 'bin' 'decoders' 'etc' )
for patchDir in ${_PATCH_DIRS[*]};
do
/bin/tar -cf ${patchDir}.tar ${patchDir}
if [ $? -ne 0 ]; then
exit 1
fi
/bin/mv ${patchDir}.tar \
${_ldm_destination_source}/${patchDir}.tar
if [ $? -ne 0 ]; then
exit 1
fi
done
# copy environment scripts to their destination
/bin/cp profile.d/* %{_build_root}/etc/profile.d
if [ $? -ne 0 ]; then
exit 1
fi
/bin/touch %{_build_root}/etc/ld.so.conf.d/awips2-ldm-noarch.conf
if [ $? -ne 0 ]; then
exit 1
fi
echo "/usr/local/ldm-%{_ldm_version}/lib" > \
%{_build_root}/etc/ld.so.conf.d/awips2-ldm-noarch.conf
if [ $? -ne 0 ]; then
exit 1
fi
echo "/awips2/qpid/lib" >> \
%{_build_root}/etc/ld.so.conf.d/awips2-ldm-noarch.conf
if [ $? -ne 0 ]; then
exit 1
fi
# copy the ldm src to the installation
cd ${LDM_BUILD_DIR}/ldm-6.8.1
cp -r src ${RPM_BUILD_ROOT}/usr/local/ldm-6.8.1/ldm-6.8.1
# remove the build directory.
rm -rf ${LDM_BUILD_DIR}
# re-locate the etc directory in the install
cd /usr/local/ldm-6.8.1
mv etc ${RPM_BUILD_ROOT}/usr/local/ldm-6.8.1
# create links to the ldm directories
cd ${RPM_BUILD_ROOT}/usr/local/ldm-6.8.1
ln -s ldm-6.8.1 runtime
ln -s runtime/bin bin
ln -s runtime/include include
ln -s runtime/lib lib
ln -s runtime/man man
ln -s runtime/src src
# create our standard directories
mkdir .ssh
touch .ssh/known_hosts
mkdir data
mkdir decoders
mkdir logs
# create our ld.so.conf.d file.
mkdir -p ${RPM_BUILD_ROOT}/etc/ld.so.conf.d
touch ${RPM_BUILD_ROOT}/etc/ld.so.conf.d/awips2-i386.conf
echo "/usr/local/ldm-6.8.1/lib" >> \
${RPM_BUILD_ROOT}/etc/ld.so.conf.d/awips2-i386.conf
# install our "patches"
PATCH_DIR="rpms/awips2.core/Installer.ldm/patch"
# Copy the hidden files.
hidden_files=( '.bash_profile' '.bashrc' '.cshrc' \
'.lesshst' '.viminfo' )
for hiddenFile in ${hidden_files[*]}; do
cp %{_baseline_workspace}/${PATCH_DIR}/${hiddenFile} \
${RPM_BUILD_ROOT}/usr/local/ldm-6.8.1
%pre
if [ -d /tmp/ldm ]; then
rm -rf /tmp/ldm
fi
mkdir -p /tmp/ldm
for dir in etc .ssh;
do
if [ -d /usr/local/ldm-%{_ldm_version}/${dir} ]; then
scp -qrp /usr/local/ldm-%{_ldm_version}/${dir} /tmp/ldm
fi
done
# Copy the contents of the bin directory.
cp -f %{_baseline_workspace}/${PATCH_DIR}/bin/* \
${RPM_BUILD_ROOT}/usr/local/ldm-6.8.1/bin
# Copy the contents of the decoder directory.
cp %{_baseline_workspace}/${PATCH_DIR}/decoders/* \
${RPM_BUILD_ROOT}/usr/local/ldm-6.8.1/decoders
# Copy the contents of the lib directory.
cp -P %{_baseline_workspace}/${PATCH_DIR}/lib/* \
${RPM_BUILD_ROOT}/usr/local/ldm-6.8.1/lib
# Copy the contents of the etc directory.
cp -f %{_baseline_workspace}/${PATCH_DIR}/etc/* \
${RPM_BUILD_ROOT}/usr/local/ldm-6.8.1/etc
# Merge pqact.conf.dev and pqact.conf.template to create
# our pqact.conf file.
%post
_ldm_dir=/usr/local/ldm-%{_ldm_version}
_ldm_root_dir=${_ldm_dir}/ldm-%{_ldm_version}
pushd . > /dev/null 2>&1
cd ${RPM_BUILD_ROOT}/usr/local/ldm-6.8.1/etc
cd ${_ldm_dir}/SOURCES
# unpack the ldm source
/bin/tar -xf awips2-ldm.%{_ldm_version}.tar.gz \
-C ${_ldm_dir}
if [ $? -ne 0 ]; then
exit 1
fi
rm -f awips2-ldm.%{_ldm_version}.tar.gz
if [ $? -ne 0 ]; then
exit 1
fi
# unpack bin, decoders, and etc.
_PATCH_DIRS=( 'bin' 'decoders' 'etc' )
for patchDir in ${_PATCH_DIRS[*]};
do
/bin/tar -xf ${patchDir}.tar -C ${_ldm_dir}
if [ $? -ne 0 ]; then
exit 1
fi
/bin/rm -f ${patchDir}.tar
if [ $? -ne 0 ]; then
exit 1
fi
done
/bin/chown -R ldm:fxalpha ${_ldm_dir}
if [ $? -ne 0 ]; then
exit 1
fi
popd > /dev/null 2>&1
# construct pqact
pushd . > /dev/null 2>&1
cd ${_ldm_dir}/etc
if [ $? -ne 0 ]; then
exit 1
fi
if [ ! -f pqact.conf.template ]; then
echo "ERROR: pqact.conf.template does not exist."
exit 1
@ -205,63 +198,120 @@ if [ ! -f pqact.conf.dev ]; then
fi
cp pqact.conf.template pqact.conf
RC=$?
if [ ${RC} -ne 0 ]; then
echo "ERROR: Unable to create the pqact.conf file."
if [ $? -ne 0 ]; then
exit 1
fi
cat pqact.conf.dev >> pqact.conf
RC=$?
if [ ${RC} -ne 0 ]; then
if [ $? -ne 0 ]; then
echo "ERROR: Unable to merge pqact.conf.dev and pqact.conf."
exit 1
fi
popd > /dev/null 2>&1
# Move our profile.d script to its final location.
mkdir -p ${RPM_BUILD_ROOT}/etc/profile.d
cp %{_baseline_workspace}/${PATCH_DIR}/profile.d/awipsLDM.csh \
${RPM_BUILD_ROOT}/etc/profile.d
pushd . > /dev/null 2>&1
# build ldm
cd ${_ldm_root_dir}/src
if [ $? -ne 0 ]; then
exit 1
fi
su ldm -c "./configure --disable-max-size --with-noaaport --disable-root-actions" \
> configure.log 2>&1
if [ $? -ne 0 ]; then
exit 1
fi
su ldm -c "make install" > install.log 2>&1
if [ $? -ne 0 ]; then
exit 1
fi
popd > /dev/null 2>&1
pushd . > /dev/null 2>&1
cd ${_ldm_root_dir}/src/noaaport
if [ $? -ne 0 ]; then
exit 1
fi
su ldm -c "/bin/bash my-make" > my-make.log 2>&1
if [ $? -ne 0 ]; then
exit 1
fi
popd > /dev/null 2>&1
pushd . > /dev/null 2>&1
cd ${_ldm_root_dir}/src
make root-actions > root-actions.log 2>&1
if [ $? -ne 0 ]; then
exit 1
fi
popd > /dev/null 2>&1
%pre
if [ -d /tmp/ldm ]; then
rm -rf /tmp/ldm
# build decrypt_file & edexBridge
pushd . > /dev/null 2>&1
cd ${_ldm_dir}/SOURCES
/bin/tar -xf decrypt_file.tar
if [ $? -ne 0 ]; then
exit 1
fi
mkdir -p /tmp/ldm
for dir in etc .ssh;
do
if [ -d /usr/local/ldm-6.8.1/${dir} ]; then
scp -qrp /usr/local/ldm-6.8.1/${dir} /tmp/ldm
/bin/tar -xf edexBridge.tar
if [ $? -ne 0 ]; then
exit 1
fi
done
/bin/rm -f *.tar
if [ $? -ne 0 ]; then
exit 1
fi
/bin/chown -R ldm:fxalpha ${_ldm_dir}/SOURCES
if [ $? -ne 0 ]; then
exit 1
fi
cd decrypt_file
if [ $? -ne 0 ]; then
exit 1
fi
su ldm -c "gcc -D_GNU_SOURCE -o decrypt_file decrypt_file.c" > \
decrypt_file.log 2>&1
if [ $? -ne 0 ]; then
exit 1
fi
/bin/mv decrypt_file ${_ldm_dir}/decoders/decrypt_file
if [ $? -ne 0 ]; then
exit 1
fi
cd ../edexBridge
if [ $? -ne 0 ]; then
exit 1
fi
su ldm -c "g++ edexBridge.cpp -I${_ldm_root_dir}/src/pqact \
-I${_ldm_root_dir}/include \
-I${_ldm_root_dir}/src \
-I/usr/include/qpid \
-L${_ldm_root_dir}/lib \
-L%{_libdir} \
-l ldm -l xml2 -l qpidclient -l qpidcommon -o edexBridge" > \
edexBridge.log 2>&1
if [ $? -ne 0 ]; then
exit 1
fi
/bin/mv edexBridge ${_ldm_dir}/bin/edexBridge
if [ $? -ne 0 ]; then
exit 1
fi
cd ..
popd > /dev/null 2>&1
%post
cd /usr/local/ldm-6.8.1/src
export LDMHOME=/usr/local/ldm-6.8.1/ldm-6.8.1
./configure --prefix=/usr/local/ldm-6.8.1/ldm-6.8.1
make clean
make
make install_setuids
RC="$?"
if [ ! "${RC}" = "0" ]; then
echo "WARNING: 'make install_setuids' has failed."
fi
for dir in etc .ssh;
do
if [ -d /tmp/ldm/${dir} ]; then
scp -qrp /tmp/ldm/${dir} /usr/local/ldm-6.8.1
scp -qrp /tmp/ldm/${dir} /usr/local/ldm-%{_ldm_version}
fi
done
#if a remote CP site, copy over the filtered data configuration
case $SITE_IDENTIFIER in gum|hfo|pbp|vrh)
echo -e "\nInstalling ldmd.conf for $SITE_IDENTIFIER."
if ! scp /usr/local/ldm-6.8.1/etc/ldmd.conf.$SITE_IDENTIFIER cpsbn1:/usr/local/ldm/etc/ldmd.conf
if ! scp /usr/local/ldm-%{_ldm_version}/etc/ldmd.conf.$SITE_IDENTIFIER cpsbn1:/usr/local/ldm/etc/ldmd.conf
then
echo "ERROR: Failed copy of ldmd.conf to cpsbn1"
fi
if ! scp /usr/local/ldm-6.8.1/etc/ldmd.conf.$SITE_IDENTIFIER cpsbn2:/usr/local/ldm/etc/ldmd.conf
if ! scp /usr/local/ldm-%{_ldm_version}/etc/ldmd.conf.$SITE_IDENTIFIER cpsbn2:/usr/local/ldm/etc/ldmd.conf
then
echo "ERROR: Failed copy of ldmd.conf to cpsbn2"
fi
@ -269,154 +319,50 @@ case $SITE_IDENTIFIER in gum|hfo|pbp|vrh)
esac
# remove the extra configuration files
rm -f /usr/local/ldm-6.8.1/etc/ldmd.conf.*
rm -f /usr/local/ldm-%{_ldm_version}/etc/ldmd.conf.*
/sbin/ldconfig
# create route-eth1, if it does not already exist.
if [ ! -f /etc/sysconfig/network-scripts/route-eth1 ]; then
_route_eth1=/etc/sysconfig/network-scripts/route-eth1
touch ${_route_eth1}
echo "ADDRESS0=224.0.1.1" > ${_route_eth1}
echo "NETMASK0=255.255.255.255" >> ${_route_eth1}
echo "ADDRESS1=224.0.1.2" >> ${_route_eth1}
echo "NETMASK1=255.255.255.255" >> ${_route_eth1}
echo "ADDRESS2=224.0.1.3" >> ${_route_eth1}
echo "NETMASK2=255.255.255.255" >> ${_route_eth1}
echo "ADDRESS3=224.0.1.4" >> ${_route_eth1}
echo "NETMASK3=255.255.255.255" >> ${_route_eth1}
echo "ADDRESS4=224.0.1.5" >> ${_route_eth1}
echo "NETMASK4=255.255.255.255" >> ${_route_eth1}
# restart networking
/sbin/service network restart
fi
rm -rf /tmp/ldm
# remove the ldm SOURCES directory
/bin/rm -rf ${_ldm_dir}/SOURCES
if [ $? -ne 0 ]; then
exit 1
fi
%preun
%postun
/sbin/ldconfig
%clean
rm -rf ${RPM_BUILD_ROOT}
rm -rf /usr/local/ldm-6.8.1
rm -rf /tmp/awips2-${USER}/ldm-build
%files
%defattr(-,ldm,fxalpha,-)
%attr(644,root,root) /etc/ld.so.conf.d/awips2-i386.conf
%dir /usr/local/ldm-6.8.1
/usr/local/ldm-6.8.1/.bash_profile
/usr/local/ldm-6.8.1/.bashrc
/usr/local/ldm-6.8.1/.cshrc
/usr/local/ldm-6.8.1/.lesshst
%dir /usr/local/ldm-6.8.1/.ssh
%config(noreplace) /usr/local/ldm-6.8.1/.ssh/known_hosts
/usr/local/ldm-6.8.1/.viminfo
%dir /usr/local/ldm-%{_ldm_version}
%dir /usr/local/ldm-%{_ldm_version}/SOURCES
/usr/local/ldm-%{_ldm_version}/SOURCES/*
/usr/local/ldm-6.8.1/bin
/usr/local/ldm-6.8.1/data
%dir /usr/local/ldm-6.8.1/decoders
%attr(755,ldm,fxalpha) /usr/local/ldm-6.8.1/decoders/binaryWriter
%attr(755,ldm,fxalpha) /usr/local/ldm-6.8.1/decoders/binWriter
%attr(755,ldm,fxalpha) /usr/local/ldm-6.8.1/decoders/cruft
%attr(755,ldm,fxalpha) /usr/local/ldm-6.8.1/decoders/decrypt_file
%attr(755,ldm,fxalpha) /usr/local/ldm-6.8.1/decoders/keygen
%attr(755,ldm,fxalpha) /usr/local/ldm-6.8.1/decoders/metarWriter
%attr(755,ldm,fxalpha) /usr/local/ldm-6.8.1/decoders/purge.sh
%attr(755,ldm,fxalpha) /usr/local/ldm-6.8.1/decoders/textWriter
/usr/local/ldm-6.8.1/etc
/usr/local/ldm-6.8.1/include
/usr/local/ldm-6.8.1/lib
%dir /usr/local/ldm-6.8.1/logs
/usr/local/ldm-6.8.1/man
/usr/local/ldm-6.8.1/runtime
/usr/local/ldm-6.8.1/src
%dir /usr/local/ldm-6.8.1/ldm-6.8.1
%dir /usr/local/ldm-6.8.1/ldm-6.8.1/bin
%attr(777,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/bin/afos
%attr(777,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/bin/ddplus
%attr(777,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/bin/dds
%attr(755,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/bin/edexBridge
%attr(777,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/bin/feedme
%attr(755,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/bin/feedtest
%attr(777,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/bin/hds
%attr(777,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/bin/hrs
%attr(777,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/bin/hupsyslog
%attr(755,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/bin/ids
%attr(777,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/bin/ldmadmin
%attr(755,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/bin/ldmcheck
%attr(755,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/bin/ldmfail
%attr(755,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/bin/ldmping
%attr(755,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/bin/ldmsend
%attr(755,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/bin/monitor_data_store.sh
%attr(755,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/bin/netcheck
%attr(755,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/bin/newlog
%attr(755,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/bin/notifyme
%attr(755,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/bin/plotMetrics
%attr(755,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/bin/pps
%attr(777,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/bin/pqact
%attr(755,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/bin/pqcat
%attr(755,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/bin/pqcheck
%attr(755,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/bin/pqcreate
%attr(755,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/bin/pqexpire
%attr(755,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/bin/pqing
%attr(755,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/bin/pqinsert
%attr(755,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/bin/pqmon
%attr(755,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/bin/pqsend
%attr(755,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/bin/pqsurf
%attr(755,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/bin/pqutil
%attr(755,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/bin/regex
%attr(755,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/bin/rpc.ldmd
%attr(755,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/bin/rtstats
%attr(755,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/bin/scour
%attr(755,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/bin/scriptconfig
%attr(755,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/bin/syscheck
/usr/local/ldm-6.8.1/ldm-6.8.1/include
%dir /usr/local/ldm-6.8.1/ldm-6.8.1/lib
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libboost_date_time.so
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libboost_date_time.so.1.33.1
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libboost_date_time.so.2
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libboost_filesystem.so
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libboost_filesystem.so.1.33.1
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libboost_filesystem.so.2
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libboost_iostreams.so
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libboost_iostreams.so.1.33.1
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libboost_iostreams.so.2
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libboost_prg_exec_monitor.so
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libboost_prg_exec_monitor.so.1.33.1
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libboost_prg_exec_monitor.so.2
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libboost_program_options.so
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libboost_program_options.so.1.33.1
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libboost_program_options.so.2
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libboost_python.so
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libboost_python.so.1.33.1
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libboost_python.so.2
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libboost_regex.so
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libboost_regex.so.1.33.1
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libboost_regex.so.2
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libboost_serialization.so
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libboost_serialization.so.1.33.1
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libboost_serialization.so.2
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libboost_signals.so
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libboost_signals.so.1.33.1
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libboost_signals.so.2
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libboost_test_exec_monitor.so
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libboost_test_exec_monitor.so.1.33.1
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libboost_test_exec_monitor.so.2
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libboost_thread.so
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libboost_thread.so.1.33.1
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libboost_thread.so.2
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libboost_unit_test_framework.so
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libboost_unit_test_framework.so.1.33.1
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libboost_unit_test_framework.so.2
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libboost_wserialization.so
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libboost_wserialization.so.1.33.1
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libboost_wserialization.so.2
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libcoroipcc.a
%attr(777,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libcoroipcc.so
%attr(777,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libcoroipcc.so.4
%attr(755,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libcoroipcc.so.4.0.0
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libcoroipcs.a
%attr(777,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libcoroipcs.so
%attr(777,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libcoroipcs.so.4
%attr(755,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libcoroipcs.so.4.0.0
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libldm.a
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libqpidclient.so
%attr(777,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libqpidclient.so.4
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libqpidclient.so.4.0.0
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libqpidcommon.so
%attr(777,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libqpidcommon.so.4
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libqpidcommon.so.4.0.0
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libqpidmessaging.so
%attr(777,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libqpidmessaging.so.3
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libqpidmessaging.so.3.0.2
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libqpidtypes.so
%attr(777,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libqpidtypes.so.1
%attr(644,ldm,fxalpha) /usr/local/ldm-6.8.1/ldm-6.8.1/lib/libqpidtypes.so.1.1.1
%docdir /usr/local/ldm-6.8.1/ldm-6.8.1/man
/usr/local/ldm-6.8.1/ldm-6.8.1/man
/usr/local/ldm-6.8.1/ldm-6.8.1/src
%attr(644,root,root) /etc/ld.so.conf.d/awips2-ldm-noarch.conf
%attr(755,root,root) /etc/profile.d/awipsLDM.csh

View file

@ -1,176 +0,0 @@
# $Id: scour.in,v 1.1.16.6.2.7 2009/07/16 19:27:13 steve Exp $
# Deletes old data files.
#
# Recursively deletes files older than a specified number of days from a
# specified set of directories. The directories, retention time in days,
# and an optional shell filename pattern appear, separated by tab characters
# one directory per line, in a configuration file named on the command line.
#
# If no files have been written under a directory since the last time scour was
# run, it will skip deleting old files and log an error message instead.
#
# WARNING: scour follows symbolic links, so don't put symbolic links to
# directories you don't want scoured under data directories.
PATH=/bin:/usr/bin
CONFFILE=/usr/local/ldm/etc/scour.conf # default, if no args
VERBOSEFLAG=
DEBUGFLAG=
ERRS=
PROG=`basename $0`
LOGGER="echo $PROG: "
TZ=UTC0 export TZ
LOG_LDM=local0
while [ "$1" != "" ]
do
case "$1" in
-v)
VERBOSEFLAG=1
;;
-x)
DEBUGFLAG=1
;;
-l) # logs to syslogd
LOGGER="logger -t $PROG -p $LOG_LDM.notice"
;;
-*)
$LOGGER "unrecognized flag ($1)"
ERRS=1
;;
*)
if [ $# -ne 1 ]
then
$LOGGER "only 1 conf file argument permitted"
ERRS=1
fi
CONFFILE=$1
;;
esac
shift
done
if [ "$ERRS" != "" ]
then
$LOGGER "usage: $PROG [-l] [-v] [-x] [config-file]"
exit 1
fi
if [ "$VERBOSEFLAG" != "" ]
then
$LOGGER "Starting Up"
fi
# Different find(1) utilities have different meanings for the "-mtime" argument.
# Discover the meaning for the find(1) utility that will be used.
#
dayOffsetName=scour_$$
trap 'rm -f /tmp/$dayOffsetName' EXIT
if touch /tmp/$dayOffsetName; then
sleep 2
#
# NOTE: OSF/1's find(1) utility doesn't conform to the Standard
# because the CWD must be changed in order to get this test to work.
#
dir=`pwd`
cd /tmp
if find $dayOffsetName -mtime 0 |
grep $dayOffsetName >/dev/null; then
DAY_OFFSET=1
elif find $dayOffsetName -mtime 1 |
grep $dayOffsetName >/dev/null; then
DAY_OFFSET=0
else
$LOGGER "Couldn't discover meaning of '-mtime' argument of find(1)"
exit 1
fi
cd $dir
rm /tmp/$dayOffsetName
else
$LOGGER "Couldn't create '-mtime' discovery-file /tmp/$dayOffsetName"
exit 1
fi
while read dir age pattern; do
if [ x$dir = x ] # ignore blank lines
then
continue
fi
case $dir in
\#*) # ignore comments
continue
;;
*)
if [ x$pattern = x ]
then
pattern="*"
fi
# Convert directory specification to absolute pathname: follow symbolic
# links (because find(1) doesn't) and perform tilde-expansion.
#
# NB: The statement
# edir=`csh -f -c "cd $dir && /bin/pwd"`
# causes the read(1) of the enclosing while-loop to return EOF if the
# directory doesn't exist.
#
if edir=`echo "cd $dir && /bin/pwd" | csh -f`; then
: true
else
$LOGGER "directory $dir does not exist, skipping"
continue
fi
if [ "$DEBUGFLAG" != "" ]
then
echo "dir=$dir age=$age pattern=$pattern edir=$edir"
fi
(
if cd $edir
then
# if either "$edir/.scour$pattern" doesn't exist yet OR
# there are files newer than "$edir/.scour$pattern"
# then
# delete old files and create "$edir/.scour$pattern"
# else
# skip deletions and log message
if [ ! -f ".scour$pattern" ] || \
[ -n "`find . -newer \".scour$pattern\" 2>/dev/null | \
head -1`" ]
then
FINDAGE=`echo $age $DAY_OFFSET - p|dc`
if [ "$VERBOSEFLAG" != "" ]
then
BEFORE=`du -s . 2>/dev/null | \
sed 's/^ *\([0-9]*\).*/\1/'`
fi
find . -type f -mtime +$FINDAGE -name "$pattern" -print \
| sed 's/\([^\n]\)/\\\1/g' \
| xargs rm -f && touch ".scour$pattern"
if [ "$VERBOSEFLAG" != "" ]
then
AFTER=`du -s . 2>/dev/null | \
sed 's/^ *\([0-9]*\).*/\1/'`
# set DELETED to max(0, BEFORE - AFTER)
DELETED=`echo $BEFORE $AFTER|\
sed 's/\([0-9]*\) \([0-9]*\).*/b=\1;a=\2;d=0;if(a<b)d=b-a;d/'|\
bc`
$LOGGER "$DELETED blocks from $edir/$pattern (>" \
"$age days old)"
fi
else
$LOGGER "skipping, no recent files in $edir/$pattern"
fi
fi
)
;;
esac
done < $CONFFILE
if [ "$VERBOSEFLAG" != "" ]
then
$LOGGER exiting ...
fi

View file

@ -5,7 +5,7 @@
chomp($hostname = `hostname --fqdn`);
# The LDM home directory:
$ldmhome = "/usr/local/ldm-6.8.1";
$ldmhome = "/usr/local/ldm-6.11.2";
# Requested size, in bytes, of the data portion of the LDM product-queue. The
# actual size might be slightly greater than the requested size for performance
@ -145,7 +145,7 @@ $metrics_file = "$log_path/metrics.txt";
# The file-pattern for the metrics files to be plotted by the "plotmetrics"
# command:
$metrics_files = "/usr/local/ldm-6.8.1/logs/metrics.txt*";
$metrics_files = "/usr/local/ldm-6.11.2/logs/metrics.txt*";
# The number of metrics-files that the "newmetrics" command should keep
# around:

View file

@ -1,241 +0,0 @@
diff -uNr ldm-6.8.1/src/pqact/filel.c ldm-6.8.1-patch0/src/pqact/filel.c
--- ldm-6.8.1/src/pqact/filel.c 2008-09-17 11:35:18.000000000 -0500
+++ ldm-6.8.1-patch0/src/pqact/filel.c 2011-02-22 12:31:58.000000000 -0600
@@ -15,6 +15,7 @@
#define PATH_MAX 255 /* _POSIX_PATH_MAX */
#endif /* !PATH_MAX */
#include <sys/types.h>
+#include <sys/sem.h>
#include <sys/stat.h>
#include <fcntl.h> /* O_RDONLY et al */
#include <unistd.h> /* access, lseek */
@@ -44,6 +45,13 @@
extern pqueue* pq;
static unsigned maxEntries = 0;
+static int shared_id = -1;
+static int sem_id = -1;
+static unsigned shared_size;
+static unsigned queue_counter = 0;
+static unsigned largest_queue_element = 0;
+static union semun semarg;
+
/*
* Defined in pqcat.c
@@ -524,6 +532,9 @@
}
else if (0 == strncmp(*av,"-log",4)) {
entry->flags |= FL_LOG;
+ }
+ else if (0 == strncmp(*av,"-edex",3)) {
+ entry->flags |= FL_EDEX;
}
}
@@ -707,6 +718,19 @@
: entry->handle.fd , prodp->info.ident);
if (entry != NULL) {
+ if(entry->flags & FL_EDEX) {
+ if(shared_id == -1) {
+ uerror("Notification specified but shared memory is not available.");
+ }
+ else {
+ edex_message * queue = (edex_message *)shmat(shared_id, (void *)0, 0);
+ strncpy(queue[queue_counter].filename, entry->path, 4096);
+ strncpy(queue[queue_counter].ident, prodp->info.ident, 256);
+ if(shmdt(queue) == -1) {
+ uerror("Detaching shared memory failed.");
+ }
+ }
+ }
size_t sz = prodp->info.sz;
void* data =
(entry->flags & FL_STRIP)
@@ -734,11 +758,23 @@
status = atFinishedArgs(argc, argv, entry);
- if ((status == 0) && (entry->flags & FL_LOG))
+/* if ((status == 0) && (entry->flags & FL_LOG))
unotice("Filed in \"%s\": %s",
argv[argc-1],
s_prod_info(NULL, 0, &prodp->info, ulogIsDebug()));
} /* data written */
+ if (status == 0) {
+ if(entry->flags & FL_LOG)
+ unotice("Filed in \"%s\": %s",
+ argv[argc-1],
+ s_prod_info(NULL, 0, &prodp->info, ulogIsDebug()));
+ if(entry->flags & FL_EDEX && shared_id != -1) {
+ semarg.val = queue_counter;
+ int semreturn = semctl(sem_id, 1, SETVAL, semarg);
+ queue_counter = (queue_counter == largest_queue_element) ? queue_counter = 0 : queue_counter + 1;
+ }
+ }
+ }
if (data != prodp->data)
free(data);
@@ -2289,6 +2325,30 @@
return error;
}
+int
+set_shared_space(
+ int shid,
+ int semid,
+ unsigned size)
+{
+ int error;
+ if(shid == -1 || semid == -1) {
+ uerror("Shared memory is not available. Notification system disabled.");
+ error = -1;
+ }
+ else {
+ shared_id = shid;
+ sem_id = semid;
+ shared_size = size;
+ semarg.val = size;
+ semctl(sem_id, 0, SETVAL, semarg);
+ semarg.val = -1;
+ semctl(sem_id, 1, SETVAL, semarg);
+ largest_queue_element = shared_size - 1;
+ error = 0;
+ }
+ return error;
+}
/*
* Returns the maximum number of file-descriptors that one process can have
diff -uNr ldm-6.8.1/src/pqact/filel.h ldm-6.8.1-patch0/src/pqact/filel.h
--- ldm-6.8.1/src/pqact/filel.h 2008-09-17 11:35:45.000000000 -0500
+++ ldm-6.8.1-patch0/src/pqact/filel.h 2011-02-22 12:16:40.000000000 -0600
@@ -19,6 +19,7 @@
#define FL_LOG 64
#define FL_METADATA 128 /* write data-product metadata */
#define FL_NODATA 256 /* don't write data */
+#define FL_EDEX 512 /* send message to memory segment */
#ifdef __cplusplus
extern "C" {
@@ -44,8 +45,23 @@
extern void fl_close_all(void);
extern void endpriv(void);
extern int set_avail_fd_count(unsigned fdCount);
+extern int set_shared_space(int shid, int semid, unsigned size);
extern long openMax();
+struct edex_message {
+ char filename[4096];
+ char ident[256];
+};
+typedef struct edex_message edex_message;
+
+union semun {
+ int val; /* Value for SETVAL */
+ struct semid_ds *buf; /* Buffer for IPC_STAT, IPC_SET */
+ unsigned short *array; /* Array for GETALL, SETALL */
+ struct seminfo *__buf; /* Buffer for IPC_INFO
+ (Linux specific) */
+};
+
#ifdef __cplusplus
}
#endif
diff -uNr ldm-6.8.1/src/pqact/pqact.c ldm-6.8.1-patch0/src/pqact/pqact.c
--- ldm-6.8.1/src/pqact/pqact.c 2008-09-04 15:09:52.000000000 -0500
+++ ldm-6.8.1-patch0/src/pqact/pqact.c 2011-02-22 12:39:21.000000000 -0600
@@ -20,6 +20,9 @@
#include <sys/time.h>
#include <sys/types.h>
#include <regex.h>
+#include <sys/types.h>
+#include <sys/ipc.h>
+#include <sys/sem.h>
#ifndef NO_WAITPID
#include <sys/wait.h>
#endif
@@ -44,7 +47,10 @@
static volatile int hupped = 0;
static char* conffilename = 0;
-
+static int shmid = -1;
+static int semid = -1;
+static key_t key;
+static key_t semkey;
timestampt oldestCursor;
timestampt currentCursor;
int currentCursorSet = 0;
@@ -104,6 +110,15 @@
/*EMPTY*/;
}
+ if(shmid != -1) {
+ unotice("Deleting shared segment.");
+ shmctl(shmid, IPC_RMID, NULL);
+ }
+ if(semid != -1) {
+ semctl(semid, 0, IPC_RMID);
+ }
+
+
(void)closeulog();
}
@@ -203,6 +218,8 @@
(void)fprintf(stderr,
"\t-d datadir cd to \"datadir\" before interpreting filenames in\n");
(void)fprintf(stderr,
+ "\t-e EDEX! \n");
+ (void)fprintf(stderr,
"\t conffile (default %s)\n",
DEFAULT_DATADIR);
(void)fprintf(stderr,
@@ -237,6 +254,7 @@
prod_class_t clss;
int toffset = TOFFSET_NONE;
int loggingToStdErr = 0;
+ unsigned queue_size = 5000;
conffilename = DEFAULT_CONFFILENAME;
@@ -278,7 +296,7 @@
opterr = 1;
- while ((ch = getopt(ac, av, "vxl:d:f:q:o:p:i:t:")) != EOF)
+ while ((ch = getopt(ac, av, "vxel:d:f:q:o:p:i:t:")) != EOF)
switch (ch) {
case 'v':
logmask |= LOG_UPTO(LOG_INFO);
@@ -286,6 +304,12 @@
case 'x':
logmask |= LOG_MASK(LOG_DEBUG);
break;
+ case 'e':
+ key = ftok("/etc/rc.d/rc.local",'R');
+ semkey = ftok("/etc/rc.d/rc.local",'e');
+ shmid = shmget(key, sizeof(edex_message) * queue_size, 0666 | IPC_CREAT);
+ semid = semget(semkey, 2, 0666 | IPC_CREAT);
+ break;
case 'l':
logfname = optarg;
break;
@@ -421,6 +445,14 @@
}
/*
+ * Inform the "filel" module of the shared memory segment
+ */
+ if (shmid != -1 && semid != -1)
+ {
+ set_shared_space(shmid, semid, queue_size);
+ }
+
+ /*
* Compile the pattern.
*/
if (re_isPathological(spec.pattern))

View file

@ -1,165 +0,0 @@
diff -uNr ldm-6.8.1/src/pqact/filel.c ldm-6.8.1.patch1-dir/src/pqact/filel.c
--- ldm-6.8.1/src/pqact/filel.c 2011-03-15 19:37:31.000000000 -0500
+++ ldm-6.8.1.patch1-dir/src/pqact/filel.c 2011-03-15 19:42:54.000000000 -0500
@@ -51,8 +51,6 @@
static unsigned queue_counter = 0;
static unsigned largest_queue_element = 0;
static union semun semarg;
-
-
/*
* Defined in pqcat.c
*/
@@ -584,7 +582,7 @@
strncpy(entry->path, path, PATH_MAX);
entry->path[PATH_MAX-1] = 0; /* just in case */
- udebug(" unio_open: %d", entry->handle.fd);
+ udebug(" unio_open: %d %s", entry->handle.fd, entry->path);
} /* output-file set to close_on_exec */
if (error) {
@@ -712,10 +710,10 @@
int status = -1; /* failure */
fl_entry* entry = get_fl_entry(UNIXIO, argc, argv);
- udebug(" unio_prodput: %d %s",
+ udebug(" unio_prodput: %d",
entry == NULL
? -1
- : entry->handle.fd , prodp->info.ident);
+ : entry->handle.fd);
if (entry != NULL) {
if(entry->flags & FL_EDEX) {
@@ -751,7 +749,6 @@
}
status = unio_put(entry, prodp->info.ident, data, sz);
-
if (status == 0) {
if (entry->flags & FL_OVERWRITE)
(void)ftruncate(entry->handle.fd, sz);
@@ -774,13 +771,13 @@
queue_counter = (queue_counter == largest_queue_element) ? queue_counter = 0 : queue_counter + 1;
}
}
- }
+ } /* data written */
if (data != prodp->data)
free(data);
} /* data != NULL */
} /* entry != NULL */
-
+ udebug(" unio_prodput: complete for %s at location %s", prodp->info.ident, entry->path);
return status;
}
diff -uNr ldm-6.8.1/src/pqact/palt.c ldm-6.8.1.patch1-dir/src/pqact/palt.c
--- ldm-6.8.1/src/pqact/palt.c 2009-01-06 14:44:09.000000000 -0600
+++ ldm-6.8.1.patch1-dir/src/pqact/palt.c 2011-03-16 09:21:01.000000000 -0500
@@ -552,6 +552,54 @@
return epochTime;
}
+static void
+seq_sub(
+ const char* istring, /* input string, possibly including
+ indicators to be expanded */
+ char* ostring, /* output string, with date indicators
+ expanded */
+ u_int seqnum) /* UTC-based product-time (might be "now") */
+{
+ static int seqfirst = 1; /* true only first time called */
+ static regex_t seqprog; /* compiled regexp for date indicator */
+ static regmatch_t seqpmatch[1]; /* substring matching information */
+ const char* e2; /* pointer to last character of seq
+ * indicator substring */
+ const char* is; /* pointer to next input character */
+ /*
+ * Compile regular-expression on first call.
+ */
+ if (seqfirst) {
+ static char seq_exp[] = "\\(seq\\)";
+
+ if (regcomp(&seqprog, seq_exp, REG_EXTENDED) != 0)
+ serror("Bad regular expression or out of memory: %s", seq_exp);
+ seqfirst = 0;
+ }
+
+ for (is = istring; regexec(&seqprog, is, 1, seqpmatch, 0) == 0; is = e2) {
+ /*
+ * Process the next date indicator in "istring".
+ */
+ printf("%d, %d\n", seqpmatch[0].rm_so, seqpmatch[0].rm_eo);
+ const char *const s0 = &is[seqpmatch[0].rm_so];
+ /* start of entire substring match */
+
+ e2 = &is[seqpmatch[0].rm_eo]; /* points to last char of substring */
+
+ /*
+ * Copy stuff before match.
+ */
+ {
+ while (is < s0)
+ *ostring++ = *is++;
+ }
+
+ int printed = sprintf(ostring, "%d", seqnum);
+ ostring+=printed;
+ }
+ (void)strcpy(ostring, is); /* copy rest of input to output */
+}
/*
from ldm3/dd_regexp.c,v 1.24 1991/03/02 17:32:08
@@ -1005,6 +1053,7 @@
date_sub("(02:yyyy)-(02:mm)-(02:dd)", buf, may31);
assert(strcmp(buf, "2007-05-02") == 0);
+ seq_sub("/tmp/(seq).txt", buf, 1234);
exit(0);
}
@@ -1110,8 +1159,11 @@
date_sub(buf2, buf1, prod->info.arrival.tv_sec);
buf1[sizeof(buf1)-1] = 0;
+ seq_sub(buf2, buf1, prod->info.seqno);
+ buf1[sizeof(buf1) -1] = 0;
+
if (ulogIsVerbose())
- uinfo(" %s: %s", s_actiont(&pal->action), buf1);
+ uinfo(" %s: %s and the ident is %s", s_actiont(&pal->action), buf1, prod->info.ident);
argc = tokenize(buf1, argv, ARRAYLEN(argv));
diff -uNr ldm-6.8.1/src/pqact/pqact.c ldm-6.8.1.patch1-dir/src/pqact/pqact.c
--- ldm-6.8.1/src/pqact/pqact.c 2011-03-15 19:37:31.000000000 -0500
+++ ldm-6.8.1.patch1-dir/src/pqact/pqact.c 2011-03-15 19:44:56.000000000 -0500
@@ -118,7 +118,6 @@
semctl(semid, 0, IPC_RMID);
}
-
(void)closeulog();
}
@@ -218,8 +217,6 @@
(void)fprintf(stderr,
"\t-d datadir cd to \"datadir\" before interpreting filenames in\n");
(void)fprintf(stderr,
- "\t-e EDEX! \n");
- (void)fprintf(stderr,
"\t conffile (default %s)\n",
DEFAULT_DATADIR);
(void)fprintf(stderr,
@@ -289,6 +286,7 @@
extern int optind;
extern int opterr;
extern char *optarg;
+
int ch;
int logmask = (LOG_MASK(LOG_ERR) | LOG_MASK(LOG_WARNING) |
LOG_MASK(LOG_NOTICE));

View file

@ -1,42 +0,0 @@
diff -crB ldm-6.8.1/src/pqact/palt.c ldm-6.8.1-patch2/src/pqact/palt.c
*** ldm-6.8.1/src/pqact/palt.c 2012-03-21 14:43:55.000000000 -0500
--- ldm-6.8.1-patch2/src/pqact/palt.c 2012-03-21 14:48:12.000000000 -0500
***************
*** 1148,1153 ****
--- 1148,1154 ----
*/
static char buf1[_POSIX_ARG_MAX];
static char buf2[_POSIX_ARG_MAX];
+ static char final_buf[_POSIX_ARG_MAX];
static char* argv[1 + _POSIX_ARG_MAX/2];
regsub(pal, prod->info.ident, buf1);
***************
*** 1159,1171 ****
date_sub(buf2, buf1, prod->info.arrival.tv_sec);
buf1[sizeof(buf1)-1] = 0;
! seq_sub(buf2, buf1, prod->info.seqno);
! buf1[sizeof(buf1) -1] = 0;
if (ulogIsVerbose())
! uinfo(" %s: %s and the ident is %s", s_actiont(&pal->action), buf1, prod->info.ident);
! argc = tokenize(buf1, argv, ARRAYLEN(argv));
if (argc < ARRAYLEN(argv))
{
--- 1160,1172 ----
date_sub(buf2, buf1, prod->info.arrival.tv_sec);
buf1[sizeof(buf1)-1] = 0;
! seq_sub(buf1, final_buf, prod->info.seqno);
! final_buf[sizeof(final_buf) -1] = 0;
if (ulogIsVerbose())
! uinfo(" %s: %s and the ident is %s", s_actiont(&pal->action), final_buf, prod->info.ident);
! argc = tokenize(final_buf, argv, ARRAYLEN(argv));
if (argc < ARRAYLEN(argv))
{

View file

@ -375,11 +375,6 @@ if [ "${1}" = "-qpid" ]; then
fi
if [ "${1}" = "-ldm" ]; then
# Ensure that the user has root privileges.
if [ ! ${UID} = 0 ]; then
echo "ERROR: You must have root privileges to build ldm."
exit 1
fi
buildRPM "awips2-ldm"
exit 0

View file

@ -217,6 +217,7 @@ if [ "${1}" = "-full" ]; then
buildRPM "awips2-python-shapely"
buildRPM "awips2-postgres"
buildRPM "awips2-pgadmin3"
buildRPM "awips2-ldm"
exit 0
fi
@ -257,7 +258,8 @@ if [ "${1}" = "-qpid" ]; then
fi
if [ "${1}" = "-ldm" ]; then
echo "INFO: AWIPS II currently does not support a 64-bit version of ldm."
buildRPM "awips2-ldm"
exit 0
fi