diff options
author | Fritz Elfert <felfert@to.com> | 2000-01-17 11:49:41 +0000 |
---|---|---|
committer | Fritz Elfert <felfert@to.com> | 2000-01-17 11:49:41 +0000 |
commit | ab18114bfd38d4632c66401b5bc079241e27fab3 (patch) | |
tree | 14f9c1d5f020cf8ed2f205094ca9e2fc907bb969 /lib/rpcs32.cc | |
parent | 6eceb82662300bf306e70bd943200665bc3c9bc3 (diff) | |
download | plptools-ab18114bfd38d4632c66401b5bc079241e27fab3.tar.gz plptools-ab18114bfd38d4632c66401b5bc079241e27fab3.tar.bz2 plptools-ab18114bfd38d4632c66401b5bc079241e27fab3.zip |
Release of plptools-0.5
Diffstat (limited to 'lib/rpcs32.cc')
-rw-r--r-- | lib/rpcs32.cc | 114 |
1 files changed, 114 insertions, 0 deletions
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 <stream.h> +#include <stdio.h> +#include <stdlib.h> +#include <fstream.h> +#include <iomanip.h> +#include <time.h> +#include <string.h> + +#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; +} |