Index: /trunk/PS-IPP-Config/lib/PS/IPP/Config.pm
===================================================================
--- /trunk/PS-IPP-Config/lib/PS/IPP/Config.pm	(revision 14790)
+++ /trunk/PS-IPP-Config/lib/PS/IPP/Config.pm	(revision 14791)
@@ -1,5 +1,5 @@
 # Copyright (c) 2006  Paul Price, Joshua Hoblitt
 #
-# $Id: Config.pm,v 1.66 2007-08-24 01:03:35 price Exp $
+# $Id: Config.pm,v 1.67 2007-09-07 21:21:19 price Exp $
 
 package PS::IPP::Config;
@@ -178,4 +178,14 @@
 }
 
+# Return the scheme used for a filename
+sub file_scheme
+{
+    my $name = shift;		# Filename for which to get the scheme
+    my ($scheme) = $name =~ /^(path|neb|file):/; # The scheme, e.g., file://, path://
+    # $scheme may be undef if the input doesn't contain one of the above recognised schemes
+    return $scheme;
+}
+
+
 # Concatenate elements of a URI
 sub caturi
@@ -185,5 +195,5 @@
 
     carp "base is not inited" if not defined $base;
-    my ($scheme) = $base =~ m|^(\S+):|; # The scheme, e.g., file://, path://
+    my $scheme = file_scheme($base); # The scheme, e.g., file://, path://
     $base =~ s|^\S+:/*||;
 
@@ -263,5 +273,4 @@
 }
 
-
 # Resolve a URI to a file name
 sub file_resolve
@@ -270,5 +279,5 @@
     my $name = shift;		# File name to check
 
-    my ($scheme) = $name =~ m|^(\S+):|; # The scheme, e.g., file://, path://
+    my $scheme = file_scheme($name); # The scheme, e.g., file://, path://
 
     return $name unless defined $scheme; # Probably a file name instead of a URI
@@ -297,5 +306,5 @@
     $self->file_prepare( $name );
 
-    my ($scheme) = $name =~ m|^(\S+):|; # The scheme, e.g., file://, path://
+    my $scheme = file_scheme($name); # The scheme, e.g., file://, path://
     if (defined $scheme) {
 	$scheme = lc($scheme);
@@ -332,5 +341,5 @@
     $self->file_prepare( $name );
 
-    my ($scheme) = $name =~ m|^(\S+):|; # The scheme, e.g., file://, path://
+    my $scheme = file_scheme($name); # The scheme, e.g., file://, path://
     if (defined $scheme) {
 	$scheme = lc($scheme);
@@ -362,5 +371,5 @@
     $self->file_prepare( $name );
 
-    my ($scheme) = $name =~ m|^(\S+):|; # The scheme, e.g., file://, path://
+    my $scheme = file_scheme($name); # The scheme, e.g., file://, path://
     if (defined $scheme and lc($scheme) eq 'neb') {
 	$name =~ s|^(\S+):/*||;
@@ -378,5 +387,5 @@
     my $name = shift;		# File name to check
 
-    my ($scheme) = $name =~ m|^(\S+):|; # The scheme, e.g., file://, path://
+    my $scheme = file_scheme($name); # The scheme, e.g., file://, path://
     if (defined $scheme and lc($scheme) eq 'neb') {
 	$name =~ s|^(\S+):/*||;
@@ -397,5 +406,5 @@
     $self->file_prepare( $target );
 
-    my ($scheme) = $target =~ m|^(\S+):|; # The scheme, e.g., file://, path://
+    my $scheme = file_scheme($target); # The scheme, e.g., file://, path://
     if (defined $scheme and lc($scheme) eq 'neb') {
 	$target =~ s|^(\S+):/*||;
@@ -436,5 +445,5 @@
     }
 
-    my ($scheme) = $name =~ m|^(\S+):|; # The scheme, e.g., file://, path://
+    my $scheme = file_scheme($name); # The scheme, e.g., file://, path://
     return $name if defined $scheme and lc($scheme) eq 'neb'; # Nothing to be done: Nebulous handles it all
 
@@ -465,5 +474,5 @@
 
     $name =~ s|/$||; # drop tailing slashes (foobar/ to foobar)
-    my ($scheme) = $name =~ m|^(\S+):|; # The scheme, e.g., file, path
+    my $scheme = file_scheme($name); # The scheme, e.g., file, path
 
     ## if this is already an absolute path (/PATH/file), just return the path
@@ -511,5 +520,5 @@
     
     # First, check to see if it's already in a relative form
-    my ($scheme) = $name =~ m|^(\S+):|; # The scheme, e.g., file, path
+    my $scheme = file_scheme($name); # The scheme, e.g., file, path
     if (defined $scheme) {
 	$scheme = lc($scheme);
