MIF file is not inventoried

Document ID : KB000004495
Last Modified Date : 14/02/2018
Show Technical Document Details
Issue:

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.

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")