#!/usr/bin/awk -f # Extracts the settings for a given joystick from the joystick # parameter file, matching the contents of the kernel, name, serial, # vendor and product variables (typically specified on the command # line), repectively kernel device, joystick name, joystick serial # number, USB vendor code, USB product code. # The exit code is 0 if a section was found, 1 otherwise. If multiple # sections match, only the first is kept. BEGIN { FS = "\""; seckernel = ""; secname = ""; secserial = ""; secvendor = ""; secproduct = ""; } /^DEVICE=/ { seckernel = $2; } /^NAME=/ { secname = $2; } /^SERIAL=/ { secserial = $2; } /^VENDOR=/ { secvendor = $2; } /^PRODUCT/ { secproduct = $2; } /(^js)|(^$)/ { # Command or empty line, ends the match criteria for a given # section if ((kernel == "" || seckernel == kernel) && (name == "" || secname == name) && (serial == "" || secserial == serial) && (vendor == "" || secvendor == vendor) && (product == "" || secproduct == product)) { # The section matches, output the command or exit if we've # reached the end of the section if ($0 ~ /^js/) { print $0; } else { exit 0; } } }