- # return undef unless (($value) = $config_sh =~ m/^$_[1]='(.*)'\s*$/m);
- # Check for the common case, ' delimeted
- $start = index($config_sh, "\n$marker$quote_type");
- # If that failed, check for " delimited
- if ($start == -1) {
- $quote_type = '"';
- $start = index($config_sh, "\n$marker$quote_type");
- }
- return undef if ( ($start == -1) && # in case it's first
- (substr($config_sh, 0, length($marker)) ne $marker) );
- if ($start == -1) {
- # It's the very first thing we found. Skip $start forward
- # and figure out the quote mark after the =.
- $start = length($marker) + 1;
- $quote_type = substr($config_sh, $start - 1, 1);
- }
- else {
- $start += length($marker) + 2;
+ if ($_[1] eq 'byteorder') {
+ my $t = $Config{ivtype};
+ my $s = $Config{ivsize};
+ my $f = $t eq 'long' ? 'L!' : $s == 8 ? 'Q': 'I';
+ if ($s == 4 || $s == 8) {
+ my $i = 0;
+ foreach my $c (reverse(2..$s)) { $i |= ord($c); $i <<= 8 }
+ $i |= ord(1);
+ $value = join('', unpack('a'x$s, pack($f, $i)));
+ } else {
+ $value = '?'x$s;
+ }
+ } else {
+ $marker = "$_[1]=";
+ # return undef unless (($value) = $config_sh =~ m/^$_[1]='(.*)'\s*$/m);
+ # Check for the common case, ' delimeted
+ $start = index($config_sh, "\n$marker$quote_type");
+ # If that failed, check for " delimited
+ if ($start == -1) {
+ $quote_type = '"';
+ $start = index($config_sh, "\n$marker$quote_type");
+ }
+ return undef if ( ($start == -1) && # in case it's first
+ (substr($config_sh, 0, length($marker)) ne $marker) );
+ if ($start == -1) {
+ # It's the very first thing we found. Skip $start forward
+ # and figure out the quote mark after the =.
+ $start = length($marker) + 1;
+ $quote_type = substr($config_sh, $start - 1, 1);
+ }
+ else {
+ $start += length($marker) + 2;
+ }
+ $value = substr($config_sh, $start,
+ index($config_sh, "$quote_type\n", $start) - $start);