DESCRIPTION
IvmConfigProperties.xml specifies hardware properties to be monitored by ivman(8), and allows running of certain commands when device properties change.IvmConfigProperties.xml is parsed as an XML file. The general form of the file is:
-
<?xml version="1.0" encoding="UTF-8"?>
<ivm:PropertiesConfig version="0.1" xmlns:ivm="http://www.eikke.com/ivm">
<ivm:Match name="matchname" value="matchvalue">
<ivm:Property name="propertyname">
<ivm:Action value="propertyvalue1" exec="command1" />
<ivm:Action value="propertyvalue2" exec="command2" />
...
</ivm:Property>
</ivm:Match>
...
</ivm:PropertiesConfig>
Each time a property changes on a device, this file will be parsed. If the Match rule matches the device on which the property changed, and the Property rule matches the name of the property which changed, then all of the Action rules within that Property tag wil be parsed. If 'value' is equal to the new value of the changed property, then the command specified in 'exec' will be executed.
A Match element can have any of the following names:
-
- ivm.mountable
- Whether or not HAL specifies that a device can and should be mounted. Must be "true" or "false".
- hal.anything
- The string in place of "anything" will be taken as the name of a HAL property string for the device, and the value of the property will be compared to the value given. Run 'lshal' to see a list of HAL properties which can be used here.
- *
- Match every device. Use with care!
As many Matches can be nested as is desired.
A Property element can have the following name:
-
- hal.anything
- The string in place of "anything" will be taken as the name of a HAL property string for the device, and if this is the property that has changed, enclosed rules will be processed.
An Action element can have any string as its 'value'. If the new value of the changed property is equal to this string, then the command given as the 'exec' property will be executed. It can also have the special value '*'; in this case, the 'exec' command will be executed every time the property changes.
exec supports substitution of HAL device properties. This is accomplished by surrounding the property name with $ symbols. For instance, if $hal.volume.mount_point$ is within a command, it will be replaced with the volume's mount point before execution. No character escaping is done in the substitution, but the characters ' and " are replaced with ?, so you can surround the substitution with quotes without fear.
There is also a single Option which can be set in this file, and should be set outside of any Match or Property blocks. The syntax of this option is:
- <ivm:Option name="checkOnInit" value="true" />
Remember that this is an XML file, which means that characters which have a special meaning in XML (entities) need to be escaped. Some characters which are popular in shell scripting (&, <, >) are among these special characters. As a quick reference, & becomes & , < becomes < , > becomes > , ' becomes ' and " becomes " .