[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdesdk/kioslave/svn
From:       Mickael Marchand <marchand () kde ! org>
Date:       2009-02-07 16:54:11
Message-ID: 1234025651.280978.380.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 922840 by marchand:

improve ::stat
fixed mtime display

 M  +1 -1      svn+file.protocol  
 M  +1 -1      svn+http.protocol  
 M  +1 -1      svn+https.protocol  
 M  +1 -1      svn+ssh.protocol  
 M  +26 -58    svn.cpp  
 M  +1 -1      svn.protocol  


--- trunk/KDE/kdesdk/kioslave/svn/svn+file.protocol #922839:922840
@@ -9,7 +9,7 @@
 makedir=true
 linking=false
 moving=true
-listing=Name,Size,Date,Owner
+listing=Name,Type,Size,Date,Owner
 defaultMimetype=application/octet-stream
 Icon=remote
 Description=Subversion ioslave
--- trunk/KDE/kdesdk/kioslave/svn/svn+http.protocol #922839:922840
@@ -9,7 +9,7 @@
 makedir=true
 linking=false
 moving=true
-listing=Name,Size,Date,Owner
+listing=Name,Type,Size,Date,Owner
 defaultMimetype=application/octet-stream
 Icon=remote
 Description=Subversion ioslave
--- trunk/KDE/kdesdk/kioslave/svn/svn+https.protocol #922839:922840
@@ -9,7 +9,7 @@
 makedir=true
 linking=false
 moving=true
-listing=Name,Size,Date,Owner
+listing=Name,Type,Size,Date,Owner
 defaultMimetype=application/octet-stream
 Icon=remote
 Description=Subversion ioslave
--- trunk/KDE/kdesdk/kioslave/svn/svn+ssh.protocol #922839:922840
@@ -9,7 +9,7 @@
 makedir=true
 linking=false
 moving=true
-listing=Name,Size,Date,Owner
+listing=Name,Type,Size,Date,Owner
 defaultMimetype=application/octet-stream
 Icon=remote
 Description=Subversion ioslave
--- trunk/KDE/kdesdk/kioslave/svn/svn.cpp #922839:922840
@@ -291,12 +291,13 @@
 void kio_svnProtocol::stat(const KUrl & url) {
 	kDebug(7128) << "kio_svn::stat(const KUrl& url) : " << url.url();
 
-	void *ra_baton, *session;
-	svn_ra_plugin_t *ra_lib;
-	svn_node_kind_t kind;
 	apr_pool_t *subpool = svn_pool_create (pool);
+	svn_ra_session_t	*session;
+	svn_error_t *err;
+	UDSEntry entry;
+	const char *author;
 
-	QString target = makeSvnURL( url);
+	QString target = makeSvnURL(url);
 	kDebug(7128) << "SvnURL: " << target;
 	recordCurrentURL( KUrl( target ) );
 
@@ -306,17 +307,6 @@
 	int idx = target.lastIndexOf( "?rev=" );
 	if ( idx != -1 ) {
 		QString revstr = target.mid( idx+5 );
-#if 0
-		kDebug(7128) << "revision string found " << revstr;
-		if ( revstr == "HEAD" ) {
-			rev.kind = svn_opt_revision_head;
-			kDebug(7128) << "revision searched : HEAD";
-		} else {
-			rev.kind = svn_opt_revision_number;
-			rev.value.number = revstr.toLong();
-			kDebug(7128) << "revision searched : " << rev.value.number;
-		}
-#endif
 		svn_opt_parse_revision( &rev, &endrev, revstr.toUtf8( ), subpool );
 		target = target.left( idx );
 		kDebug(7128) << "new target : " << target;
@@ -326,21 +316,13 @@
 	}
 
 	//init
-	svn_error_t *err = svn_ra_init_ra_libs(&ra_baton,subpool);
+	err = svn_ra_initialize(subpool);
 	if ( err ) {
 		kDebug(7128) << "init RA libs failed : " << err->message;
 		error( KIO::ERR_SLAVE_DEFINED, err->message );
 		svn_pool_destroy( subpool );
 		return;
 	}
-	//find RA libs
-	err = svn_ra_get_ra_library(&ra_lib,ra_baton,svn_path_canonicalize( \
                target.toUtf8(), subpool ),subpool);
-	if ( err ) {
-		kDebug(7128) << "RA get libs failed : " << err->message;
-		error( KIO::ERR_SLAVE_DEFINED, err->message );
-		svn_pool_destroy( subpool );
-		return;
-	}
 	kDebug(7128) << "RA init completed";
 
 	//start session
@@ -357,7 +339,7 @@
 	callbackbt->pool = subpool;
 	callbackbt->config = ctx->config;
 
-	err = ra_lib->open(&session,svn_path_canonicalize( target.toUtf8(), subpool \
),cbtable,callbackbt,ctx->config,subpool); +	err = \
svn_ra_open(&session,svn_path_canonicalize( target.toUtf8(), subpool \
),cbtable,callbackbt,ctx->config,subpool);  if ( err ) {
 		kDebug(7128)<< "Open session " << err->message;
 		error( KIO::ERR_SLAVE_DEFINED, err->message );
@@ -367,7 +349,7 @@
 	kDebug(7128) << "Session opened to " << target;
 	//find number for HEAD
 	if (rev.kind == svn_opt_revision_head) {
-		err = ra_lib->get_latest_revnum(session,&rev.value.number,subpool);
+		err = svn_ra_get_latest_revnum(session, &rev.value.number, subpool);
 		if ( err ) {
 			kDebug(7128)<< "Latest RevNum " << err->message;
 			error( KIO::ERR_SLAVE_DEFINED, err->message );
@@ -378,36 +360,28 @@
 	}
 
 	//get it
-	err = ra_lib->check_path(session,"",rev.value.number,&kind,subpool);
+	svn_dirent_t *dirent;
+	err = svn_ra_stat (session, "", rev.value.number, &dirent, subpool);
 	if ( err ) {
+			kDebug(7128)<< "RA Stat " << err->message;
 			error( KIO::ERR_SLAVE_DEFINED, err->message );
 			svn_pool_destroy( subpool );
+			return;
 	}
-	kDebug(7128) << "Checked Path";
-	UDSEntry entry;
-	switch ( kind ) {
-		case svn_node_file:
-			kDebug(7128) << "::stat result : file";
-			createUDSEntry(url.fileName(),"",0,false,0,entry);
+	kDebug(7128) << "Checked Path" << svn_path_canonicalize( target.toUtf8(), subpool \
); +	if (dirent) {
+		svn_utf_cstring_from_utf8 (&author, dirent->last_author, subpool);
+		if (dirent->kind==svn_node_dir || dirent->kind==svn_node_file) {
+			kDebug(7128) << "Creating UDSEntry " << url.fileName();
+			createUDSEntry(url.fileName(),author,dirent->size,dirent->kind==svn_node_dir?true:false, \
apr_time_sec(dirent->time),entry);  statEntry( entry );
-			break;
-		case svn_node_dir:
-			kDebug(7128) << "::stat result : directory";
-			createUDSEntry(url.fileName(),"",0,true,0,entry);
-			statEntry( entry );
-			break;
-		case svn_node_unknown:
-		case svn_node_none:
-			//error XXX
-		default:
-			kDebug(7128) << "::stat result : UNKNOWN ==> WOW :)";
-			;
+		}
 	}
 	finished();
 	svn_pool_destroy( subpool );
 }
 
-void kio_svnProtocol::listDir(const KUrl& url){
+void kio_svnProtocol::listDir(const KUrl& url) {
 	kDebug(7128) << "kio_svn::listDir(const KUrl& url) : " << url.url();
 
 	apr_pool_t *subpool = svn_pool_create (pool);
@@ -424,17 +398,6 @@
 	if ( idx != -1 ) {
 		QString revstr = target.mid( idx+5 );
 		svn_opt_parse_revision( &rev, &endrev, revstr.toUtf8(), subpool );
-#if 0
-		kDebug(7128) << "revision string found " << revstr;
-		if ( revstr == "HEAD" ) {
-			rev.kind = svn_opt_revision_head;
-			kDebug(7128) << "revision searched : HEAD";
-		} else {
-			rev.kind = svn_opt_revision_number;
-			rev.value.number = revstr.toLong();
-			kDebug(7128) << "revision searched : " << rev.value.number;
-		}
-#endif
 		target = target.left( idx );
 		kDebug(7128) << "new target : " << target;
 	} else {
@@ -490,9 +453,14 @@
 bool kio_svnProtocol::createUDSEntry( const QString& filename, const QString& user, \
long long int size, bool isdir, time_t mtime, UDSEntry& entry) {  kDebug(7128) << \
"MTime : " << ( long )mtime;  kDebug(7128) << "UDS filename : " << filename;
+
+	mode_t access;
+	mode_t type = isdir?S_IFDIR:S_IFREG;
+	access = S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH;
 	
 	entry.insert(KIO::UDSEntry::UDS_NAME,filename);
-	entry.insert(KIO::UDSEntry::UDS_FILE_TYPE,isdir ? S_IFDIR : S_IFREG);
+	entry.insert(KIO::UDSEntry::UDS_ACCESS,access);
+	entry.insert(KIO::UDSEntry::UDS_FILE_TYPE,type);
 	entry.insert(KIO::UDSEntry::UDS_SIZE,size);
 	entry.insert(KIO::UDSEntry::UDS_MODIFICATION_TIME,mtime);
 	entry.insert(KIO::UDSEntry::UDS_USER,user);
--- trunk/KDE/kdesdk/kioslave/svn/svn.protocol #922839:922840
@@ -9,7 +9,7 @@
 makedir=true
 linking=false
 moving=true
-listing=Name,Size,Date,Owner
+listing=Name,Type,Size,Date,Owner
 defaultMimetype=application/octet-stream
 Icon=remote
 Description=Subversion ioslave


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic