mars-dosutils/capture.c

81 lines
2.0 KiB
C

/* capture.c 05-Apr-96 */
/****************************************************************
* (C)opyright (C) 1993,1996 Martin Stover, Marburg, Germany *
****************************************************************/
#include "net.h"
static int usage(void)
{
fprintf(stderr, "usage:\t%s level\n", funcname);
fprintf(stderr, "\tlevel=0 .. 99\n" );
return(-1);
}
static int parse_argv(uint8 *devname, uint8 *queuename,
int argc, char *argv[], int parsemode)
{
int k = 0;
*devname = '\0';
*queuename = '\0';
while (++k < argc) {
uint8 *p = argv[k];
if (k == 1) {
strmaxcpy(devname, p, 20);
upstr(devname);
if (!strcmp(devname, "PRN"))
strcpy(devname, "LPT1");
} else if (k == 2) {
strmaxcpy(queuename, p, 20);
upstr(queuename);
}
}
return(0);
}
static int do_capture(uint8 *drvstr, uint8 *queuestr, int delete)
{
int result = redir_device_drive(delete ? -1 : 0x3, drvstr, queuestr);
return(result);
}
static int show_capture(uint8 *drvstr)
{
int result;
int k =-1;
uint8 devname[20];
uint8 remotename[130];
int devicetyp;
while ((result = list_redir(++k, &devicetyp, devname, remotename)) > -1){
if (result > -1 && devicetyp == 0x3) {
upstr(devname);
upstr(remotename);
if (!drvstr || !*drvstr || !strcmp(devname, drvstr))
fprintf(stdout, "%-10s captured to %s\n", devname, remotename);
}
}
return(result);
}
int func_capture(int argc, char *argv[], int mode)
{
uint8 devname [22];
uint8 queuestr[22];
if (!parse_argv(devname, queuestr, argc, argv, mode)) {
int result=0;
if (*queuestr || mode == 1) {
result=do_capture(devname, queuestr, mode);
if (result< 0)
fprintf(stderr, "capture error:%d, device:%s \n", result, devname);
}
if (mode != 1)
show_capture(devname);
else if (result > -1)
fprintf(stdout, "Capture of %s removed\n", devname);
return(result);
}
return(1);
}