]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/contrib/strutl.cc
Sync
[apt.git] / apt-pkg / contrib / strutl.cc
index 14965f91e97e22d88edb09d8633ba5ae96bb9928..f30d9ffe7bdcbe15fed6e5c8db7c923b036d3ef8 100644 (file)
@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
-// $Id: strutl.cc,v 1.1 1998/07/07 04:17:16 jgg Exp $
+// $Id: strutl.cc,v 1.3 1998/07/19 04:22:08 jgg Exp $
 /* ######################################################################
 
    String Util - Some usefull string functions.
@@ -226,7 +226,7 @@ string TimeToStr(unsigned long Sec)
 /* This replaces all occurances of Subst with Contents in Str. */
 string SubstVar(string Str,string Subst,string Contents)
 {
-   string::size_type Pos;
+   string::size_type Pos = 0;
    string::size_type OldPos = 0;
    string Temp;
    
@@ -243,6 +243,25 @@ string SubstVar(string Str,string Subst,string Contents)
    return Temp + string(Str,OldPos);
 }
                                                                        /*}}}*/
+// URItoFileName - Convert the uri into a unique file name             /*{{{*/
+// ---------------------------------------------------------------------
+/* This converts a URI into a safe filename. It quotes all unsafe characters
+   and converts / to _ and removes the scheme identifier. The resulting
+   file name should be unique and never occur again for a different file */
+string URItoFileName(string URI)
+{
+   string::const_iterator I = URI.begin() + URI.find(':') + 1;
+   for (; I < URI.end() && *I == '/'; I++);
+
+   // "\x00-\x20{}|\\\\^\\[\\]<>\"\x7F-\xFF";
+   URI = QuoteString(string(I,URI.end() - I),"\\|{}[]<>\"^~_=!@#$%^&*");
+   string::iterator J = URI.begin();
+   for (; J != URI.end(); J++)
+      if (*J == '/') 
+        *J = '_';
+   return URI;
+}
+                                                                       /*}}}*/
 // Base64Encode - Base64 Encoding routine for short strings            /*{{{*/
 // ---------------------------------------------------------------------
 /* This routine performs a base64 transformation on a string. It was ripped