On Mon, Dec 14, 2009 at 11:34:31AM +0100, Kay Sievers wrote: > On Mon, Dec 14, 2009 at 11:28, Johannes Stezenbach <js@xxxxxxxxx> wrote: > > On Mon, Dec 14, 2009 at 10:14:50AM +0100, Martin Pitt wrote: > >> > >> A gotcha that I see here is that the force_release only ever gets > >> appended to. I. e. whenever we run udevtrigger, we'd append the same > >> keys again. POSIX shell doesn't have elaborate substring matching > >> capabilities like bash's ${x/pattern/string}, so it might not be too > >> easy to check if we already have a key in POSIX sh. (But please don't > >> call grep in a loop; let's rather rewrite this bit in C). There might > >> be some trickery with splitting by IFS=, into an array or so, if you > >> want to keep using sh? > > > > The problem is that force_release is preset by the kernel, so > > in order to do what you want we need either > > a) pass both old and new key list on "change" > > b) save initial force_release value to a file on "add" > > and use the file on "change" > > It should just not mangle the sysfs string if the value is already > contained. Why would you need to store anything between a "change" and > "add" event? Both events are handled the same way, and the two > independent events run one after each other. I don't understand. I only append to the force_release attribute because the kernel already removes duplicates. However, what does not work this way is to remove scancodes from force_release. I thought that was what Martin wanted to accomplish on the "change" event. > I guess the logic to append a value to the sysfs string only if needed > should be done in a tine C program, or a sed script with a RUN+= call > directly to sed maybe can be used ... sed cannot do hex to decimal conversion, but awk could be used. Thanks, Johannes -- To unsubscribe from this list: send the line "unsubscribe linux-hotplug" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html