From 7d73847be2bb1ade9f08292d71e0a7ec0ee12876 Mon Sep 17 00:00:00 2001 From: Fritz Elfert Date: Sun, 27 Aug 2000 23:32:17 +0000 Subject: Added several checks for errors in queryDrive. --- plpftp/ftp.cc | 111 +++++++++++++++++++++++++++++++--------------------------- 1 file changed, 60 insertions(+), 51 deletions(-) (limited to 'plpftp/ftp.cc') diff --git a/plpftp/ftp.cc b/plpftp/ftp.cc index c0dceb9..e49df10 100644 --- a/plpftp/ftp.cc +++ b/plpftp/ftp.cc @@ -815,71 +815,80 @@ session(rfsv & a, rpcs & r, int xargc, char **xargv) } if (!strcmp(argv[0], "killsave") && (argc == 2)) { bufferArray tmp; - ofstream op(argv[1]); - if (!op) { - cerr << "Could not write processlist " << argv[1] << endl; - continue; - } - r.queryDrive('C', tmp); - op << "#plpftp processlist" << endl; - while (!tmp.empty()) { - char pbuf[128]; - bufferStore cmdargs; - bufferStore bs = tmp.pop(); - int pid = bs.getWord(0); - const char *proc = bs.getString(2); - sprintf(pbuf, "%s.$%d", proc, pid); - bs = tmp.pop(); - if (r.getCmdLine(pbuf, cmdargs) == 0) - op << cmdargs.getString(0) << " " << bs.getString(0) << endl; - r.stopProgram(pbuf); + if ((res = r.queryDrive('C', tmp)) != rfsv::E_PSI_GEN_NONE) + cerr << "Error: " << res << endl; + else { + ofstream op(argv[1]); + if (!op) { + cerr << "Could not write processlist " << argv[1] << endl; + continue; + } + op << "#plpftp processlist" << endl; + while (!tmp.empty()) { + char pbuf[128]; + bufferStore cmdargs; + bufferStore bs = tmp.pop(); + int pid = bs.getWord(0); + const char *proc = bs.getString(2); + sprintf(pbuf, "%s.$%d", proc, pid); + bs = tmp.pop(); + if (r.getCmdLine(pbuf, cmdargs) == 0) + op << cmdargs.getString(0) << " " << bs.getString(0) << endl; + r.stopProgram(pbuf); + } + op.close(); } - op.close(); continue; } if (!strcmp(argv[0], "kill") && (argc >= 2)) { bufferArray tmp, tmp2; bool anykilled = false; - r.queryDrive('C', tmp); - tmp2 = tmp; - for (int i = 1; i < argc; i++) { - int kpid; - tmp = tmp2; - if (!strcmp(argv[i], "all")) - kpid = -1; - else - sscanf(argv[i], "%d", &kpid); - while (!tmp.empty()) { - bufferStore bs = tmp.pop(); - tmp.pop(); - int pid = bs.getWord(0); - const char *proc = bs.getString(2); - if (kpid == -1 || kpid == pid) { - char pbuf[128]; - sprintf(pbuf, "%s.$%d", proc, pid); - r.stopProgram(pbuf); - anykilled = true; + if ((res = r.queryDrive('C', tmp)) != rfsv::E_PSI_GEN_NONE) + cerr << "Error: " << res << endl; + else { + tmp2 = tmp; + for (int i = 1; i < argc; i++) { + int kpid; + tmp = tmp2; + if (!strcmp(argv[i], "all")) + kpid = -1; + else + sscanf(argv[i], "%d", &kpid); + while (!tmp.empty()) { + bufferStore bs = tmp.pop(); + tmp.pop(); + int pid = bs.getWord(0); + const char *proc = bs.getString(2); + if (kpid == -1 || kpid == pid) { + char pbuf[128]; + sprintf(pbuf, "%s.$%d", proc, pid); + r.stopProgram(pbuf); + anykilled = true; + } } + if (kpid == -1) + break; } - if (kpid == -1) - break; + if (!anykilled) + cerr << "no such process" << endl; } - if (!anykilled) - cerr << "no such process" << endl; continue; } if (!strcmp(argv[0], "ps")) { bufferArray tmp; - r.queryDrive('C', tmp); - cout << "PID CMD ARGS" << endl; - while (!tmp.empty()) { - bufferStore bs = tmp.pop(); - bufferStore bs2 = tmp.pop(); - int pid = bs.getWord(0); - const char *proc = bs.getString(2); - const char *arg = bs2.getString(); + if ((res = r.queryDrive('C', tmp)) != rfsv::E_PSI_GEN_NONE) + cerr << "Error: " << res << endl; + else { + cout << "PID CMD ARGS" << endl; + while (!tmp.empty()) { + bufferStore bs = tmp.pop(); + bufferStore bs2 = tmp.pop(); + int pid = bs.getWord(0); + const char *proc = bs.getString(2); + const char *arg = bs2.getString(); - printf("%5d %-12s %s\n", pid, proc, arg); + printf("%5d %-12s %s\n", pid, proc, arg); + } } continue; } -- cgit v1.2.3