util.cpp
00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 #include "util.h"
00021 #include <qstringlist.h>
00022 
00023 KURL smbToUrl(const QString& work, const QString& server, const QString& printer)
00024 {
00025     KURL    url;
00026     url.setProtocol("smb");
00027     if (!work.isEmpty())
00028     {
00029         url.setHost(work);
00030         url.setPath("/" + server + "/" + printer);
00031     }
00032     else
00033     {
00034         url.setHost(server);
00035         url.setPath("/" + printer);
00036     }
00037     return url;
00038 }
00039 
00040 void urlToSmb(const KURL& url, QString& work, QString& server, QString& printer)
00041 {
00042     if (url.protocol() != "smb")
00043         return;
00044     QString h = url.host();
00045     QStringList l = QStringList::split('/', url.path(), false);
00046     if (l.count() > 1)
00047     {
00048         work = h;
00049         server = l[0];
00050         printer = l[1];
00051     }
00052     else
00053     {
00054         work = QString::null;
00055         server = h;
00056         printer = l[0];
00057     }
00058 }
00059 
00060 KURL smbToUrl(const QString& s)
00061 {
00062     
00063     KURL    url;
00064     int p = s.find('@');
00065     if (p == -1)
00066     {
00067         
00068         
00069         url = KURL("smb://" + KURL::encode_string(s.mid(6)));
00070     }
00071     else
00072     {
00073         
00074         QString username = s.mid(6, p-6);
00075         url = KURL("smb://" + KURL::encode_string(s.mid(p+1)));
00076         int q = username.find(':');
00077         if (q == -1)
00078             url.setUser(username);
00079         else
00080         {
00081             url.setUser(username.left(q));
00082             url.setPass(username.mid(q+1));
00083         }
00084     }
00085     return url;
00086 }
00087 
00088 QString urlToSmb(const KURL& url)
00089 {
00090     
00091     QString s = "smb://";
00092     if (!url.user().isEmpty())
00093     {
00094         s.append(url.user());
00095         if (!url.pass().isEmpty())
00096             s.append(":").append(url.pass());
00097         s.append("@");
    }
    s.append(url.host()).append(KURL::decode_string(url.path()));
    return s;
}
int findIndex(int ID)
{
    for (int i=0; i<KPrinter::NPageSize-1; i++)
        if (page_sizes[i].ID == ID)
            return i;
    return 4;
}
QString buildSmbURI( const QString& work, const QString& server, const QString& printer, const QString& user, const QString& passwd )
{
    QString uri = server + "/" + printer;
00098     if ( !work.isEmpty() )
00099         uri.prepend( work + "/" );
00100     if ( !user.isEmpty() )
00101     {
00102         uri.prepend( "@" );
        if ( !passwd.isEmpty() )
            uri.prepend( ":" + passwd );
00103         uri.prepend( user );
00104     }
00105     uri.prepend( "smb://" );
00106     return uri;
00107 }
00108 
00109 bool splitSmbURI( const QString& uri, QString& work, QString& server, QString& printer, QString& user, QString& passwd )
00110 {
00111     int p( 0 );
00112     if ( !uri.startsWith( "smb://" ) )
00113         return false;
00114     p = 6;
00115 
00116     int p1 = uri.find( '/', p );
00117     if ( p1 != -1 )
00118     {
00119         int p2 = uri.find( '@', p );
00120         if ( p2 != -1 && p2 < p1 )
00121         {
00122             
00123             int p3 = uri.find( ':', p );
00124             if ( p3 != -1 && p3 < p2 )
00125             {
00126                 
00127                 user = uri.mid( p, p3-p );
00128                 passwd = uri.mid( p3+1, p2-p3-1 );
00129             }
00130             else
00131                 user = uri.mid( p, p2-p );
00132         }
00133         else
00134             p2 = p-1;
00135         QStringList l = QStringList::split( '/', uri.mid( p2+1 ), false );
00136         switch ( l.count() )
00137         {
00138             case 3:
00139                 work = l[ 0 ];
00140                 server = l[ 1 ];
00141                 printer = l[ 2 ];
00142                 break;
00143             case 2:
00144                 server = l[ 0 ];
00145                 printer = l[ 1 ];
00146                 break;
00147             default:
00148                 return false;
00149         }
00150         return true;
00151     }
00152     return false;
00153 }
00154 
00155 QString shadowPassword( const QString& uri )
00156 {
00157     QString result = uri;
00158     int p = result.find( ':' );
00159     if ( p != -1 )
00160     {
00161         while ( result[ ++p ] == '/' );
00162         int p1 = result.find( '@', p );
00163         if ( p1 != -1 )
00164         {
00165             int p2 = result.find( ':', p );
00166             if ( p2 != -1 && p2 < p1 )
00167             {
00168                 result.replace( p2, p1-p2, "" );
00169             }
00170         }
00171     }
00172     return result;
00173 }
00174  
This file is part of the documentation for kdeprint Library Version 3.2.0.