aboutsummaryrefslogtreecommitdiff
path: root/src-qt5/desktop-utils/lumina-fm/gitCompat.cpp
diff options
context:
space:
mode:
authorKen Moore <ken@pcbsd.org>2016-09-15 14:47:06 -0400
committerKen Moore <ken@pcbsd.org>2016-09-15 14:47:06 -0400
commit9f79342ab366a74a26b2957e88af265e90658025 (patch)
tree94d54361e9c92ae9b758686912236c933c4e360d /src-qt5/desktop-utils/lumina-fm/gitCompat.cpp
parentGet the Git clone functionality all functional. The last thing missing is a g... (diff)
downloadlumina-9f79342ab366a74a26b2957e88af265e90658025.tar.gz
lumina-9f79342ab366a74a26b2957e88af265e90658025.tar.bz2
lumina-9f79342ab366a74a26b2957e88af265e90658025.zip
Get the progress reporting all setup for the git clone. Now it is all set and ready for use!
Diffstat (limited to 'src-qt5/desktop-utils/lumina-fm/gitCompat.cpp')
-rw-r--r--src-qt5/desktop-utils/lumina-fm/gitCompat.cpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/src-qt5/desktop-utils/lumina-fm/gitCompat.cpp b/src-qt5/desktop-utils/lumina-fm/gitCompat.cpp
new file mode 100644
index 00000000..18e83e6a
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/gitCompat.cpp
@@ -0,0 +1,45 @@
+//===========================================
+// Lumina-DE source code
+// Copyright (c) 2016, Ken Moore
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+// This is the backend classe for interacting with the "git" utility
+//===========================================
+#include "gitCompat.h"
+#include <QApplication>
+
+#define TMPFILE QString("/tmp/.")
+GitProcess::GitProcess() : QProcess(){
+ this->setProcessChannelMode(QProcess::MergedChannels);
+ tmpfile.setFileName(TMPFILE +QString::number( (rand()%8999) + 1000 ));
+ //qDebug() << "Temporary File Name:" << tmpfile.fileName();
+ tmpfile.setParent(this);
+ connect(this, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(cleanup()) );
+ connect(this, SIGNAL(readyReadStandardOutput()), this, SLOT(printoutput()) );
+}
+
+GitProcess::~GitProcess(){
+ if(tmpfile.exists()){ tmpfile.remove(); } //ensure that password file never gets left behind
+}
+
+void GitProcess::setSSHPassword(QString pass){
+ //Save the password into the temporary file
+ if( tmpfile.open(QIODevice::WriteOnly) ){
+ QTextStream in(&tmpfile);
+ in << "#!/bin/sh"<<"\n";
+ in << "echo \""+pass+"\"" << "\n";
+ in << "rm "+tmpfile.fileName()+"\n"; //have the script clean itself up after running once
+ tmpfile.close();
+ }
+ tmpfile.setPermissions( QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner );
+ QApplication::processEvents();
+ QProcessEnvironment env = this->processEnvironment();
+ env.insert("SSH_ASKPASS", tmpfile.fileName());
+ env.insert("DISPLAY",":0"); //will not actually be used - the tmp file sends the password back instantly
+ this->setProcessEnvironment(env);
+}
+
+void GitProcess::cleanup(){
+ if(tmpfile.exists()){ tmpfile.remove(); } //ensure that password file never gets left behind
+}
bgstack15