[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#536683: Info received (bash execution trace)



On Mon, Sep 14, 2009 at 18:28:27 -0300, Rogério Brito wrote:
> OK, now that I just sent the workaround in the earlier message, I dug in
> a little further.
> 
> The problem seems to be related to the embedded awk script in the
> configure script of the package.
> 
> In its stock version, when fed with my x configuration file, it prints
> nothing.

I have an xorg.conf, and get this output from the script:
XKBMODEL="pc104"
layout_priority=medium
XKBLAYOUT="dvorak"

This is the relevant section of xorg.conf:
Section "InputDevice"
	Identifier "Generic Keyboard"
	Driver "kbd"
	Option "CoreKeyboard"
	Option "XkbRules" "xfree86"
	Option "XkbModel" "pc104"
	Option "XkbLayout" "dvorak"
EndSection


> When I change
> 
> ,----
> | bin {
> |     $0 = tolower($0);
> |     sub("#.*","")
> |     xkb = "";
> | }
> `----
...

I don't have any line starting with "bin".  I've attached the awk script
I see on my system (I copied the awk_expr literal to a new script and
executed 'echo "$awk_expr" > FILE').

> The script does not understand when the section containing the keyboard
> has finished and, thus, it also gets the settings for the mouse and
> interprets them as the settings for the keyboard also (which is not
> always the right thing).

I don't see this behaviour, despite also having a mouse InputDevice
section with options after the keyboard section.

-- Michael
{
    $0 = tolower($0);
    sub("#.*","")
    xkb = "";
}

/^[ \t]*section[ \t]+"inputdevice"/,/^[ \t]*endsection/ {
    if ($1 == "option") {
	if ($2 == "\"xkbmodel\"") {
	    xkb = "XKBMODEL";
	} else if ($2 == "\"xkblayout\"") {
	    xkb = "XKBLAYOUT";
	    print "layout_priority=medium";
	} else if ($2 == "\"xkbvariant\"") {
	    xkb = "XKBVARIANT";
	} else if ($2 == "\"xkboptions\"") {
	    xkb = "XKBOPTIONS"; 
	}
	$1 = "";
	$2 = "";
    }
}

xkb != "" && /^[ \t]*\"[^"]+\"[ \t]*$/ {
    sub("^[ \t]*\"", "");
    sub("\".*", "");
    gsub("[ \t]", "");
    if ($1 !~ /[()]/) {
	print xkb "=\"" $0 "\"";
    } else {
	if (xkb == "XKBLAYOUT" && $1 ~ /^[^()]+\([^()]+\)$/) {
	    split($1, s, /[()]/);
	    print "XKBLAYOUT=" s[1];
	    print "XKBVARIANT=" s[2];
	}
    }
}

Attachment: signature.asc
Description: Digital signature


Reply to: