|
#define MAX_PRINTERS 5 |
|
|
|
|
1 |
#include "rdesktop.h" |
#include "rdesktop.h" |
2 |
|
|
3 |
extern RDPDR_DEVICE g_rdpdr_device[]; |
extern RDPDR_DEVICE g_rdpdr_device[]; |
4 |
|
|
5 |
PRINTER * |
static PRINTER * |
6 |
get_printer_data(HANDLE handle) |
get_printer_data(NTHANDLE handle) |
7 |
{ |
{ |
8 |
int index; |
int index; |
9 |
|
|
16 |
} |
} |
17 |
|
|
18 |
int |
int |
19 |
printer_enum_devices(int *id, char *optarg) |
printer_enum_devices(uint32 * id, char *optarg) |
20 |
{ |
{ |
21 |
PRINTER *pprinter_data; |
PRINTER *pprinter_data; |
22 |
|
|
44 |
pprinter_data = (PRINTER *) xmalloc(sizeof(PRINTER)); |
pprinter_data = (PRINTER *) xmalloc(sizeof(PRINTER)); |
45 |
|
|
46 |
strcpy(g_rdpdr_device[*id].name, "PRN"); |
strcpy(g_rdpdr_device[*id].name, "PRN"); |
47 |
strcat(g_rdpdr_device[*id].name, ltoa(already + count + 1, 10)); |
strcat(g_rdpdr_device[*id].name, l_to_a(already + count + 1, 10)); |
48 |
|
|
49 |
/* first printer is set as default printer */ |
/* first printer is set as default printer */ |
50 |
if ((already + count) == 0) |
if ((already + count) == 0) |
52 |
else |
else |
53 |
pprinter_data->default_printer = False; |
pprinter_data->default_printer = False; |
54 |
|
|
55 |
pos2 = next_arg(optarg, ':'); |
pos2 = next_arg(optarg, '='); |
56 |
if (*optarg == (char) 0x00) |
if (*optarg == (char) 0x00) |
57 |
pprinter_data->printer = "mydeskjet"; /* set default */ |
pprinter_data->printer = "mydeskjet"; /* set default */ |
58 |
else |
else |
83 |
|
|
84 |
static NTSTATUS |
static NTSTATUS |
85 |
printer_create(uint32 device_id, uint32 access, uint32 share_mode, uint32 disposition, uint32 flags, |
printer_create(uint32 device_id, uint32 access, uint32 share_mode, uint32 disposition, uint32 flags, |
86 |
char *filename, HANDLE * handle) |
char *filename, NTHANDLE * handle) |
87 |
{ |
{ |
88 |
char cmd[256]; |
char cmd[256]; |
89 |
PRINTER *pprinter_data; |
PRINTER *pprinter_data; |
107 |
} |
} |
108 |
|
|
109 |
static NTSTATUS |
static NTSTATUS |
110 |
printer_close(HANDLE handle) |
printer_close(NTHANDLE handle) |
111 |
{ |
{ |
112 |
PRINTER *pprinter_data; |
int i = get_device_index(handle); |
113 |
|
if (i >= 0) |
114 |
pprinter_data = get_printer_data(handle); |
{ |
115 |
|
PRINTER *pprinter_data = g_rdpdr_device[i].pdevice_data; |
116 |
g_rdpdr_device[get_device_index(handle)].handle = 0; |
if (pprinter_data) |
117 |
|
pclose(pprinter_data->printer_fp); |
118 |
pclose(pprinter_data->printer_fp); |
g_rdpdr_device[i].handle = 0; |
119 |
|
} |
120 |
return STATUS_SUCCESS; |
return STATUS_SUCCESS; |
121 |
} |
} |
122 |
|
|
123 |
static NTSTATUS |
static NTSTATUS |
124 |
printer_write(HANDLE handle, uint8 * data, uint32 length, uint32 offset, uint32 * result) |
printer_write(NTHANDLE handle, uint8 * data, uint32 length, uint32 offset, uint32 * result) |
125 |
{ |
{ |
126 |
PRINTER *pprinter_data; |
PRINTER *pprinter_data; |
127 |
|
|