ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/SCRAM/src/Utilities/urlhandler.pm
Revision: 1.5.2.2
Committed: Mon Oct 18 06:51:32 1999 UTC (25 years, 7 months ago) by williamc
Content type: text/plain
Branch: V0_9branch
CVS Tags: BuildSystemProto1, V0_18_0, V0_18_0model, V0_17_1, V0_18_0alpha, V0_17_0, V0_16_4, V0_16_3, V0_16_2, V0_16_1, V0_16_0, V0_15_1, V0_15_0, V0_15_0beta, V0_14_0, V0_12_12_4, V0_12_12_3, V0_13_3, V0_13_2, V0_12_12_2, V0_12_12_1, V0_12_12_0, PlayGround_0, V0_13_1, V0_13_0, V0_12_12, V0_12_11, V0_12_9b, V0_12_10, V0_12_9, V0_12_8, V0_12_7, V0_12_6, V0_12_5, V0_12_4, V0_12_3, V0_12_2, V0_12_1, V0_12_0, V0_11_4, V0_11_3, V0_11_2, V0_11_1, V0_11_0, V0_10_19, V0_10_18, V0_10_17, V0_10_16, V0_10_15, V0_10_14, V0_10_13, V0_10_12, V0_10_11, V0_10_10, V0_10_9, V0_10_8, V0_10_7, V0_10_6, V0_10_5, V0_10_4, V0_10_3, V0_10_2, V0_10_1, V0_10_0
Branch point for: V0_17branch, V0_16branch, V0_15branch, HPWbranch
Changes since 1.5.2.1: +29 -10 lines
Log Message:
Add Multi-Database support

File Contents

# Content
1 # url handler -> returns the location of the file
2 #
3 # returns file location - or crashes out
4 # can pass a file name for the item to be stored as
5 # if not then stores in a default cache.
6
7 package urlhandler;
8 require 5.004;
9 require Exporter;
10 @ISA = qw(Exporter);
11 @EXPORT = qw(urlhandler);
12
13
14 sub urlhandler($@) {
15 my $origurl=shift;
16 my $filename=shift;
17 my $rest;
18 my $type;
19 my $url;
20 my $version;
21
22 chomp $origurl;
23 # get our version info from the url (after last ??)
24 ( $url, $version) = split /\?\?/, $origurl;
25 if ( $url=~/:/ ) {
26 ($type,$rest) = split /:/, $url;
27 }
28 else {
29 $type='label';
30 $rest=$url.":".$version;
31 }
32
33 my @urltypes = qw(label file cvs http);
34 foreach $ty ( @urltypes ) {
35 do { return &$ty($rest, $filename); $supported='yes'; last; }
36 if $type eq $ty;
37 }
38 if ( ! ( $supported=~/yes/ )) {
39 print "urlhandler: Unsupported type $type\n";
40 exit 1;
41 }
42 }
43 sub label {
44 my $label=shift;
45 my $filename=shift;
46 my $returnval="";
47
48 $returnval=labelsort($label, $ENV{SCRAM_LOOKUPDB}, $filename);
49 if ( $returnval ne "" ) {
50 return $returnval;
51 }
52 ($proj,$ver)=split /:/, $label;
53 print "Error : Unknown project name or version (".$proj." ".$ver.")\n";
54 exit 1;
55 }
56
57 sub labelsort {
58 my $label=shift;
59 my $filename=shift;
60 my $fileoutname=shift;
61 my $returnval="";
62
63 use FileHandle;
64 my $fh=FileHandle->new();
65 open ( $fh, $filename )
66 || die "urlhandler: Unable to open DataBase $ENV{SCRAM_LOOKUPDB} $!";
67 while ( <$fh> ) {
68 next if /^#/;
69 if ( $_=~/\!DB (.*)/ ) {
70 my $db=$1;
71 if ( -f $db ) {
72 $returnval=labelsort($label,$db, $fileoutname);
73 last if ($returnval ne "");
74 }
75 }
76 if ( $_=~s/^$label\:// ) {
77 $returnval = urlhandler($_,$fileoutname);
78 }
79 }
80 close $fh;
81 return $returnval;
82 }
83
84 sub file {
85 use File::Copy;
86 my $urlfile=shift;
87 my $filename=shift;
88 if ( -e "$urlfile" ) {
89 if ( $filename=~/.*/ ) {
90 copy ( $urlfile, $filename ) || return $urlfile;
91 return $filename;
92 }
93 return $urlfile;
94 }
95 else {
96 print "urlhandler: Unable to find file $urlfile : $!\n";
97 exit 1;
98 }
99 }
100
101 sub cvs {
102 print "Coming soon\n";
103 }
104
105 sub http {
106 my $urlfile=shift;
107 my $filename=shift;
108 # use LWP::Simple;
109 print "Hello $filename, $urlfile\n";
110 # open (STORE, ">$filename") || die "unable to open file $filename $!\n";
111 # print STORE (get 'http:'.$urlfile);
112 close STORE;
113 }
114
115 sub cachefilename {
116 use File::Basename;
117 use Utilities::AddDir;
118 my $filebase=dirname($rest);
119 $cache="/tmp/williamc/urlhandler$$";
120 adddir($cache);
121 $filename=$cache."/".$filebase;
122 }
123