Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
Please login to access the resource
openSUSE:Factory:Rebuild
dirvish
dirvish-locate.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File dirvish-locate.patch of Package dirvish
From: Ondřej Surý <ondrej@debian.org> Subject: Get patch level of loadconfig.pl in case exit codes are needed. --- dirvish-1.2.1~/dirvish-locate.pl 2004-02-25 03:42:14.000000000 +0100 +++ dirvish-1.2.1/dirvish-locate.pl 2006-07-07 11:14:12.000000000 +0200 @@ -1,3 +1,8 @@ +#!/usr/bin/perl + +$CONFDIR = "/etc/dirvish"; + + # $Id: dirvish-locate.pl,v 12.0 2004/02/25 02:42:14 jw Exp $ $Name: Dirvish-1_2 $ $VERSION = ('$Name: Dirvish-1_2_1 $' =~ /Dirvish/i) @@ -234,3 +239,244 @@ || $$b{created} cmp $$a{created}; } +# Get patch level of loadconfig.pl in case exit codes +# are needed. +# $Id: loadconfig.pl,v 12.0 2004/02/25 02:42:15 jw Exp $ + + +######################################################################### +# # +# Copyright 2002 and $Date: 2004/02/25 02:42:15 $ +# Pegasystems Technologies and J.W. Schultz # +# # +# Licensed under the Open Software License version 2.0 # +# # +######################################################################### + +sub seppuku # Exit with code and message. +{ + my ($status, $message) = @_; + + chomp $message; + if ($message) + { + $seppuku_prefix and print STDERR $seppuku_prefix, ': '; + print STDERR $message, "\n"; + } + exit $status; +} + +sub slurplist +{ + my ($key, $filename, $Options) = @_; + my $f; + my $array; + + $filename =~ m(^/) and $f = $filename; + if (!$f && ref($$Options{vault}) ne 'CODE') + { + $f = join('/', $$Options{Bank}, $$Options{vault}, + 'dirvish', $filename); + -f $f or $f = undef; + } + $f or $f = "$CONFDIR/$filename"; + open(PATFILE, "<$f") or seppuku 229, "cannot open $filename for $key list"; + $array = $$Options{$key}; + while(<PATFILE>) + { + chomp; + length or next; + push @{$array}, $_; + } + close PATFILE; +} + +# loadconfig -- load configuration file +# SYNOPSYS +# loadconfig($opts, $filename, \%data) +# +# DESCRIPTION +# load and parse a configuration file into the data +# hash. If the filename does not contain / it will be +# looked for in the vault if defined. If the filename +# does not exist but filename.conf does that will +# be read. +# +# OPTIONS +# Options are case sensitive, upper case has the +# opposite effect of lower case. If conflicting +# options are given only the last will have effect. +# +# f Ignore fields in config file that are +# capitalized. +# +# o Config file is optional, return undef if missing. +# +# R Do not allow recoursion. +# +# g Only load from global directory. +# +# +# +# LIMITATIONS +# Only way to tell whether an option should be a list +# or scalar is by the formatting in the config file. +# +# Options reqiring special handling have to have that +# hardcoded in the function. +# + +sub loadconfig +{ + my ($mode, $configfile, $Options) = @_; + my $confile = undef; + my ($key, $val); + my $CONFIG; + ref($Options) or $Options = {}; + my %modes; + my ($conf, $bank, $k); + + $modes{r} = 1; + for $_ (split(//, $mode)) + { + if (/[A-Z]/) + { + $_ =~ tr/A-Z/a-z/; + $modes{$_} = 0; + } else { + $modes{$_} = 1; + } + } + + + $CONFIG = 'CFILE' . scalar(@{$$Options{Configfiles}}); + + $configfile =~ s/^.*\@//; + + if($configfile =~ m[/]) + { + $confile = $configfile; + } + elsif($configfile ne '-') + { + if(!$modes{g} && $$Options{vault} && $$Options{vault} ne 'CODE') + { + if(!$$Options{Bank}) + { + my $bank; + for $bank (@{$$Options{bank}}) + { + if (-d "$bank/$$Options{vault}") + { + $$Options{Bank} = $bank; + last; + } + } + } + if ($$Options{Bank}) + { + $confile = join('/', $$Options{Bank}, + $$Options{vault}, 'dirvish', + $configfile); + -f $confile || -f "$confile.conf" + or $confile = undef; + } + } + $confile ||= "$CONFDIR/$configfile"; + } + + if($configfile eq '-') + { + open($CONFIG, $configfile) or seppuku 221, "cannot open STDIN"; + } else { + ! -f $confile && -f "$confile.conf" and $confile .= '.conf'; + + if (! -f "$confile") + { + $modes{o} and return undef; + seppuku 222, "cannot open config file: $configfile"; + } + + grep(/^$confile$/, @{$$Options{Configfiles}}) + and seppuku 224, "ERROR: config file looping on $confile"; + + open($CONFIG, $confile) + or seppuku 225, "cannot open config file: $configfile"; + } + push(@{$$Options{Configfiles}}, $confile); + + while(<$CONFIG>) + { + chomp; + s/\s*#.*$//; + s/\s+$//; + /\S/ or next; + + if(/^\s/ && $key) + { + s/^\s*//; + push @{$$Options{$key}}, $_; + } + elsif(/^SET\s+/) + { + s/^SET\s+//; + for $k (split(/\s+/)) + { + $$Options{$k} = 1; + } + } + elsif(/^UNSET\s+/) + { + s/^UNSET\s+//; + for $k (split(/\s+/)) + { + $$Options{$k} = undef; + } + } + elsif(/^RESET\s+/) + { + ($key = $_) =~ s/^RESET\s+//; + $$Options{$key} = [ ]; + } + elsif(/^[A-Z]/ && $modes{f}) + { + $key = undef; + } + elsif(/^\S+:/) + { + ($key, $val) = split(/:\s*/, $_, 2); + length($val) or next; + $k = $key; $key = undef; + + if ($k eq 'config') + { + $modes{r} and loadconfig($mode . 'O', $val, $Options); + next; + } + if ($k eq 'client') + { + if ($modes{r} && ref ($$Options{$k}) eq 'CODE') + { + loadconfig($mode . 'og', "$CONFDIR/$val", $Options); + } + $$Options{$k} = $val; + next; + } + if ($k eq 'file-exclude') + { + $modes{r} or next; + + slurplist('exclude', $val, $Options); + next; + } + if (ref ($$Options{$k}) eq 'ARRAY') + { + push @{$$Options{$k}}, $_; + } else { + $$Options{$k} = $val; + } + } + } + close $CONFIG; + return $Options; +}
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor