81 lines
2.0 KiB
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);
|
|
}
|
|
|