Source Code (Use browser search to find items of interest.)

Class Index

kioslave'MyCallback (./kdebase/kioslave/smb/smb.cc:32)

class MyCallback : public SmbAnswerCallback
{
protected:
	SmbProtocol *proto;
	// we keep this info so that no password
	// is asked to user when accessing subdirs
	char *user, *pass, *service;
	QString message;
	bool havePass;
	bool haveServicePass;
public:
	MyCallback(SmbProtocol *p) : proto(p), 
		user(0), pass(0), service(0),
        	havePass(false), haveServicePass(false) {}
	~MyCallback() {
		if (user) {delete user; user = 0;}
		if (pass) {delete pass; pass = 0;}
		if (service) {delete service; service = 0;}
	}
	
	char *getAnswer(int type, const char *optmessage) {
		bool res = true;
		QString myUser, myPass;
		switch (type) {
			case ANSWER_USER_NAME:
				message = "Login for host ";
				message += optmessage;
				myUser = user?user:"";
				myPass = "";
				res = proto->openPassDlg(message, myUser, myPass);
				kDebugInfo( 7106, "CallBack: res=%s", res?debugString("true"):debugString("false"));
				if (!res) {
					if (user) {delete user; user = 0;}
					if (pass) {delete pass; pass = 0;}
					havePass=false;
				} else {
					if (user) delete user;
					user=new char[myUser.local8Bit().length()+1];
					strcpy(user,myUser.local8Bit().data());
					if (pass) delete pass;
					pass=new char[myPass.local8Bit().length()+1];
					strcpy(pass,myPass.local8Bit().data());
					kDebugInfo( 7106, "CallBack: user=%s, pass=%s", debugString(user), debugString(pass));
					havePass=true;
				}
				return user;
			
			case ANSWER_USER_PASSWORD:
				if (havePass) return pass;
				message = "Password for user ";
				message += optmessage;
				myUser = optmessage;
				myPass = "";
				res = proto->openPassDlg(message, myUser, myPass);
				kDebugInfo( 7106, "CallBack: res=%s", res?debugString("true"):debugString("false"));
				if (!res) {
					if (user) {delete user; user = 0;}
					if (pass) {delete pass; pass = 0;}
					havePass=false;
				} else {
					if (user) delete user;
					user=new char[myUser.local8Bit().length()+1];
					strcpy(user,myUser.local8Bit().data());
					if (pass) delete pass;
					pass=new char[myPass.local8Bit().length()+1];
					strcpy(pass,myPass.local8Bit().data());
					kDebugInfo( 7106, "CallBack: user=%s, pass=%s", debugString(user), debugString(pass));
					havePass=true;
				}
				return pass;
			
			case ANSWER_SERVICE_PASSWORD:
				if (haveServicePass && !strcmp(service, optmessage))
					return pass; // we have it already
				message = "Password for service ";
				message += optmessage;
				message += " (user ignored)";
				myUser = user?user:"";
				myPass = "";
				res = proto->openPassDlg(message, myUser, myPass);
				kDebugInfo( 7106, "CallBack: res=%s", res?debugString("true"):debugString("false"));
				kDebugInfo( 7106, "CallBack: user=%s, pass=%s", debugString(user), debugString(pass));
				if (!res) {
					if (service) {delete service; service = 0;}
					if (pass) {delete pass; pass = 0;}
					haveServicePass=false;
				} else {
					if (service) delete service;
					service=new char[strlen(optmessage)+1];
					strcpy(service,optmessage);
					if (pass) delete pass;
					pass=new char[myPass.local8Bit().length()+1];
					strcpy(pass,myPass.local8Bit().data());
					kDebugInfo( 7106, "CallBack: service=%s, pass=%s", debugString(service), debugString(pass));
					haveServicePass=true;
				}
				return pass;
		}
		return 0; //???
	}
};


kioslave'MyCallback::getAnswer() (./kdebase/kioslave/smb/smb.cc:52)

	char *getAnswer(int type, const char *optmessage) {
		bool res = true;
		QString myUser, myPass;
		switch (type) {
			case ANSWER_USER_NAME:
				message = "Login for host ";
				message += optmessage;
				myUser = user?user:"";
				myPass = "";
				res = proto->openPassDlg(message, myUser, myPass);
				kDebugInfo( 7106, "CallBack: res=%s", res?debugString("true"):debugString("false"));
				if (!res) {
					if (user) {delete user; user = 0;}
					if (pass) {delete pass; pass = 0;}
					havePass=false;
				} else {
					if (user) delete user;
					user=new char[myUser.local8Bit().length()+1];
					strcpy(user,myUser.local8Bit().data());
					if (pass) delete pass;
					pass=new char[myPass.local8Bit().length()+1];
					strcpy(pass,myPass.local8Bit().data());
					kDebugInfo( 7106, "CallBack: user=%s, pass=%s", debugString(user), debugString(pass));
					havePass=true;
				}
				return user;
			
			case ANSWER_USER_PASSWORD:
				if (havePass) return pass;
				message = "Password for user ";
				message += optmessage;
				myUser = optmessage;
				myPass = "";
				res = proto->openPassDlg(message, myUser, myPass);
				kDebugInfo( 7106, "CallBack: res=%s", res?debugString("true"):debugString("false"));
				if (!res) {
					if (user) {delete user; user = 0;}
					if (pass) {delete pass; pass = 0;}
					havePass=false;
				} else {
					if (user) delete user;
					user=new char[myUser.local8Bit().length()+1];
					strcpy(user,myUser.local8Bit().data());
					if (pass) delete pass;
					pass=new char[myPass.local8Bit().length()+1];
					strcpy(pass,myPass.local8Bit().data());
					kDebugInfo( 7106, "CallBack: user=%s, pass=%s", debugString(user), debugString(pass));
					havePass=true;
				}
				return pass;
			
			case ANSWER_SERVICE_PASSWORD:
				if (haveServicePass && !strcmp(service, optmessage))
					return pass; // we have it already
				message = "Password for service ";
				message += optmessage;
				message += " (user ignored)";
				myUser = user?user:"";
				myPass = "";
				res = proto->openPassDlg(message, myUser, myPass);
				kDebugInfo( 7106, "CallBack: res=%s", res?debugString("true"):debugString("false"));
				kDebugInfo( 7106, "CallBack: user=%s, pass=%s", debugString(user), debugString(pass));
				if (!res) {
					if (service) {delete service; service = 0;}
					if (pass) {delete pass; pass = 0;}
					haveServicePass=false;
				} else {
					if (service) delete service;
					service=new char[strlen(optmessage)+1];
					strcpy(service,optmessage);
					if (pass) delete pass;
					pass=new char[myPass.local8Bit().length()+1];
					strcpy(pass,myPass.local8Bit().data());
					kDebugInfo( 7106, "CallBack: service=%s, pass=%s", debugString(service), debugString(pass));
					haveServicePass=true;
				}
				return pass;
		}
		return 0; //???
	}
};