]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
parse_hwdb: introduce local variable for boolean syntax
authorLennart Poettering <lennart@amutable.com>
Tue, 3 Mar 2026 20:07:57 +0000 (21:07 +0100)
committerLennart Poettering <lennart@amutable.com>
Wed, 4 Mar 2026 07:22:20 +0000 (08:22 +0100)
hwdb.d/parse_hwdb.py

index 1a56f40c461024568f2696201fbfb137a7132fe4..3c81fa371f522b55378d25b5eadfb75278174845 100755 (executable)
@@ -147,6 +147,7 @@ def property_grammar():
     mount_matrix = Group(mount_matrix_row + ';' + mount_matrix_row + ';' + mount_matrix_row)('MOUNT_MATRIX')
     xkb_setting = Optional(Word(alphanums + '+-/@._'))
     id_input_setting = Optional(Or((Literal('0'), Literal('1'))))
+    zero_one = Or((Literal('0'), Literal('1')))
 
     # Although this set doesn't cover all of characters in database entries, it's enough for test targets.
     name_literal = Word(printables + ' ')
@@ -156,13 +157,13 @@ def property_grammar():
              ('MOUSE_WHEEL_CLICK_ANGLE_HORIZONTAL', INTEGER),
              ('MOUSE_WHEEL_CLICK_COUNT', INTEGER),
              ('MOUSE_WHEEL_CLICK_COUNT_HORIZONTAL', INTEGER),
-             ('ID_INPUT_3D_MOUSE', Or((Literal('0'), Literal('1')))),
-             ('ID_AUTOSUSPEND', Or((Literal('0'), Literal('1')))),
+             ('ID_INPUT_3D_MOUSE', zero_one),
+             ('ID_AUTOSUSPEND', zero_one),
              ('ID_AUTOSUSPEND_DELAY_MS', INTEGER),
-             ('ID_AV_PRODUCTION_CONTROLLER', Or((Literal('0'), Literal('1')))),
-             ('ID_AV_LIGHTS', Or((Literal('0'), Literal('1')))),
-             ('ID_PERSIST', Or((Literal('0'), Literal('1')))),
-             ('ID_PDA', Or((Literal('0'), Literal('1')))),
+             ('ID_AV_PRODUCTION_CONTROLLER', zero_one),
+             ('ID_AV_LIGHTS', zero_one),
+             ('ID_PERSIST', zero_one),
+             ('ID_PDA', zero_one),
              ('ID_INPUT', id_input_setting),
              ('ID_INPUT_ACCELEROMETER', id_input_setting),
              ('ID_INPUT_JOYSTICK', id_input_setting),
@@ -176,12 +177,12 @@ def property_grammar():
              ('ID_INPUT_TOUCHPAD', id_input_setting),
              ('ID_INPUT_TOUCHSCREEN', id_input_setting),
              ('ID_INPUT_TRACKBALL', id_input_setting),
-             ('ID_SIGNAL_ANALYZER', Or((Literal('0'), Literal('1')))),
-             ('ID_MAKER_TOOL', Or((Literal('0'), Literal('1')))),
-             ('ID_HARDWARE_WALLET', Or((Literal('0'), Literal('1')))),
-             ('ID_SOFTWARE_RADIO', Or((Literal('0'), Literal('1')))),
-             ('ID_MM_DEVICE_IGNORE', Or((Literal('0'), Literal('1')))),
-             ('ID_NET_AUTO_LINK_LOCAL_ONLY', Or((Literal('0'), Literal('1')))),
+             ('ID_SIGNAL_ANALYZER', zero_one),
+             ('ID_MAKER_TOOL', zero_one),
+             ('ID_HARDWARE_WALLET', zero_one),
+             ('ID_SOFTWARE_RADIO', zero_one),
+             ('ID_MM_DEVICE_IGNORE', zero_one),
+             ('ID_NET_AUTO_LINK_LOCAL_ONLY', zero_one),
              ('POINTINGSTICK_SENSITIVITY', INTEGER),
              ('ID_INTEGRATION', Or(('internal', 'external'))),
              ('ID_INPUT_TOUCHPAD_INTEGRATION', Or(('internal', 'external'))),
@@ -193,25 +194,25 @@ def property_grammar():
              ('ACCEL_MOUNT_MATRIX', mount_matrix),
              ('ACCEL_LOCATION', Or(('display', 'base'))),
              ('PROXIMITY_NEAR_LEVEL', INTEGER),
-             ('IEEE1394_UNIT_FUNCTION_MIDI', Or((Literal('0'), Literal('1')))),
-             ('IEEE1394_UNIT_FUNCTION_AUDIO', Or((Literal('0'), Literal('1')))),
-             ('IEEE1394_UNIT_FUNCTION_VIDEO', Or((Literal('0'), Literal('1')))),
+             ('IEEE1394_UNIT_FUNCTION_MIDI', zero_one),
+             ('IEEE1394_UNIT_FUNCTION_AUDIO', zero_one),
+             ('IEEE1394_UNIT_FUNCTION_VIDEO', zero_one),
              ('ID_VENDOR_FROM_DATABASE', name_literal),
              ('ID_MODEL_FROM_DATABASE', name_literal),
              ('ID_TAG_MASTER_OF_SEAT', Literal('1')),
-             ('ID_INFRARED_CAMERA', Or((Literal('0'), Literal('1')))),
+             ('ID_INFRARED_CAMERA', zero_one),
              ('ID_CAMERA_DIRECTION', Or(('front', 'rear'))),
              ('SOUND_FORM_FACTOR', Or(('internal', 'webcam', 'speaker', 'headphone', 'headset', 'handset', 'microphone'))),
-             ('ID_SYS_VENDOR_IS_RUBBISH', Or((Literal('0'), Literal('1')))),
-             ('ID_PRODUCT_NAME_IS_RUBBISH', Or((Literal('0'), Literal('1')))),
-             ('ID_PRODUCT_VERSION_IS_RUBBISH', Or((Literal('0'), Literal('1')))),
-             ('ID_BOARD_VERSION_IS_RUBBISH', Or((Literal('0'), Literal('1')))),
-             ('ID_PRODUCT_SKU_IS_RUBBISH', Or((Literal('0'), Literal('1')))),
-             ('ID_CHASSIS_ASSET_TAG_IS_RUBBISH', Or((Literal('0'), Literal('1')))),
+             ('ID_SYS_VENDOR_IS_RUBBISH', zero_one),
+             ('ID_PRODUCT_NAME_IS_RUBBISH', zero_one),
+             ('ID_PRODUCT_VERSION_IS_RUBBISH', zero_one),
+             ('ID_BOARD_VERSION_IS_RUBBISH', zero_one),
+             ('ID_PRODUCT_SKU_IS_RUBBISH', zero_one),
+             ('ID_CHASSIS_ASSET_TAG_IS_RUBBISH', zero_one),
              ('ID_CHASSIS', name_literal),
              ('ID_SYSFS_ATTRIBUTE_MODEL', name_literal),
              ('ID_NET_NAME_FROM_DATABASE', name_literal),
-             ('ID_NET_NAME_INCLUDE_DOMAIN', Or((Literal('0'), Literal('1')))),
+             ('ID_NET_NAME_INCLUDE_DOMAIN', zero_one),
             )
     fixed_props = [Literal(name)('NAME') - Suppress('=') - val('VALUE')
                    for name, val in props]