From ab18114bfd38d4632c66401b5bc079241e27fab3 Mon Sep 17 00:00:00 2001 From: Fritz Elfert Date: Mon, 17 Jan 2000 11:49:41 +0000 Subject: Release of plptools-0.5 --- lib/rpcs32.cc | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 lib/rpcs32.cc (limited to 'lib/rpcs32.cc') diff --git a/lib/rpcs32.cc b/lib/rpcs32.cc new file mode 100644 index 0000000..d710b9c --- /dev/null +++ b/lib/rpcs32.cc @@ -0,0 +1,114 @@ +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// + +#include +#include +#include +#include +#include +#include +#include + +#include "defs.h" +#include "bool.h" +#include "rpcs32.h" +#include "bufferstore.h" +#include "bufferarray.h" +#include "ppsocket.h" + +rpcs32::rpcs32(ppsocket * _skt) +{ + skt = _skt; + reset(); +} + +rpcs32::~rpcs32() +{ + bufferStore a; + a.addStringT("Close"); + if (status == E_PSI_GEN_NONE) + skt->sendBufferStore(a); + skt->closeSocket(); +} + +int rpcs32:: +queryDrive(char drive, bufferArray &ret) +{ + bufferStore a; + a.addByte(drive); + if (!sendCommand(rpcs::QUERY_DRIVE, a)) + return rpcs::E_PSI_FILE_DISC; + getResponse(a); + int l = a.getLen(); + ret.clear(); +//cout << dec << "qd: " << a.getLen() << " a="<< a << endl; + while (l > 1) { + bufferStore b, c; + const char *s; + char *p; + int pid; + int sl; + + s = a.getString(0); + sl = strlen(s) + 1; + l -= sl; + a.discardFirstBytes(sl); + p = strstr(s, ".$"); + if (p) { + *p = '\0'; p += 2; + sscanf(p, "%d", &pid); + } else + pid = 0; + b.addWord(pid); + b.addStringT(s); + s = a.getString(0); + sl = strlen(s) + 1; + l -= sl; + a.discardFirstBytes(sl); + c.addStringT(s); + ret.push(c); + ret.push(b); + } + return 0; +} + +int rpcs32:: +getCmdLine(const char *process, char *buf, int bufsize) +{ + return 0; +} + +int rpcs32:: +configOpen(void) +{ + bufferStore a; +cout << "configOpen:" << endl; + if (!sendCommand(rpcs::CONFIG_OPEN, a)) + return rpcs::E_PSI_FILE_DISC; + getResponse(a); +cout << a << endl; +} + +int rpcs32:: +configRead(void) +{ + bufferStore a; +cout << "configRead:" << endl; + if (!sendCommand(rpcs::CONFIG_READ, a)) + return rpcs::E_PSI_FILE_DISC; + getResponse(a); +cout << a << endl; +} -- cgit v1.2.3