MIF file is not inventoried

book

Article ID: 4495

calendar_today

Updated On:

Products

CA Automation Suite for Data Centers - Configuration Automation CA Client Automation - Asset Management CA Client Automation - IT Client Manager CA Client Automation CA Client Automation - Remote Control CA Client Automation - Asset Intelligence CA Client Automation - Desktop Migration Manager CA Client Automation - Patch Manager

Issue/Introduction

MIF file is not inventoried if it contains some quotes or backslash characters in the value.

 

Example :

Following MIF File could not be collected :

 

Start Component

 Name = "TEST Inventory"

 Description = "TEST Inventory"

 Start Group

  Name = "TEST"

  ID = 1

  Class = ""

  Description = "TEST"

  Start Attribute

   Name = "Path"

   ID = 1

   Description = "Path"

   Type = String(64)

   Value = ""C:\Program Files\CA\DSM\bin""

  End Attribute

 End Group

End Component

 

Process amm2iw32.exe used to convert MIF file to MNV file is returning the error :

Error in line 18

parse error

 

Or sometimes the MNV file contains wrong value :

000101[TEST Inventory]

000201[TEST Inventory|TEST]

00010500Path|C:Program FilesCADSM in

Cause

If MIF File contains some quotes or backslash characters in the value, process amm2iw32.exe is failing to analyze the MIF file. These characters must be protected by adding a backslash character before every quote and backslash characters.

Environment

Release: 
Component:

Resolution

The solution is to add a backslash character before every quote and backslash characters.

This could be done with the function Slash_Quotes :

 

FUNCTION Slash_Quote(sString AS STRING) AS STRING

DIM i as integer

DIM sBuf as STRING

sBuf=""

FOR i=1 TO Len(sString)

   IF Mid(sString,i,1)="\" THEN

      sBuf=sBuf+"\\"

   ELSE

      IF Mid(sString,i,1)="""" THEN

            sBuf=sBuf+"\"""

      ELSE

         sBuf=sBuf+Mid(sString,i,1)   

     END IF

   END IF

NEXT i

Slash_Quote=sBuf 

END FUNCTION 

 

 

Example of usage of this function : 

 

DIM sMIFFile, sPath, SName AS STRING

DIM iIDGroup AS INTEGER

sMIFFile = ComputerPath+"test_script.mif"

CreateMIFfile(sMIFFile,"Test Inventory","Test Inventory")

iIDGroup = CreateMIFGroup(sMIFFile,"Test Inventory","Test Inventory","")

sPath="C:\Program Files\CA\DSM\bin"

sName="This is a ""Test""."

CreateMifString(sMifFile,iIDGroup,"Path",Slash_Quote(sPath),"Path")

CreateMifString(sMifFile,iIDGroup,"Name",Slash_Quote(sName),"Name")