--- sourceforge.net/trunk/rdesktop/printer.c 2004/02/07 17:32:21 602 +++ sourceforge.net/trunk/rdesktop/printer.c 2005/04/02 17:32:38 874 @@ -2,8 +2,8 @@ extern RDPDR_DEVICE g_rdpdr_device[]; -PRINTER * -get_printer_data(HANDLE handle) +static PRINTER * +get_printer_data(NTHANDLE handle) { int index; @@ -16,7 +16,7 @@ } int -printer_enum_devices(uint32 *id, char *optarg) +printer_enum_devices(uint32 * id, char *optarg) { PRINTER *pprinter_data; @@ -25,8 +25,8 @@ int count = 0; int already = 0; - // we need to know how many printers we've already set up - // supplied from other -r flags than this one. + /* we need to know how many printers we've already set up + supplied from other -r flags than this one. */ while (count < *id) { if (g_rdpdr_device[count].device_type == DEVICE_TYPE_PRINTER) @@ -44,7 +44,7 @@ pprinter_data = (PRINTER *) xmalloc(sizeof(PRINTER)); strcpy(g_rdpdr_device[*id].name, "PRN"); - strcat(g_rdpdr_device[*id].name, ltoa(already + count + 1, 10)); + strcat(g_rdpdr_device[*id].name, l_to_a(already + count + 1, 10)); /* first printer is set as default printer */ if ((already + count) == 0) @@ -62,7 +62,7 @@ } if (!pos2 || (*pos2 == (char) 0x00)) - pprinter_data->driver = "HP LaserJet IIIP"; /* no printer driver supplied set default */ + pprinter_data->driver = "HP Color LaserJet 8500 PS"; /* no printer driver supplied set default */ else { pprinter_data->driver = xmalloc(strlen(pos2) + 1); @@ -83,7 +83,7 @@ static NTSTATUS printer_create(uint32 device_id, uint32 access, uint32 share_mode, uint32 disposition, uint32 flags, - char *filename, HANDLE * handle) + char *filename, NTHANDLE * handle) { char cmd[256]; PRINTER *pprinter_data; @@ -107,21 +107,21 @@ } static NTSTATUS -printer_close(HANDLE handle) +printer_close(NTHANDLE handle) { - PRINTER *pprinter_data; - - pprinter_data = get_printer_data(handle); - - g_rdpdr_device[get_device_index(handle)].handle = 0; - - pclose(pprinter_data->printer_fp); - + int i = get_device_index(handle); + if (i >= 0) + { + PRINTER *pprinter_data = g_rdpdr_device[i].pdevice_data; + if (pprinter_data) + pclose(pprinter_data->printer_fp); + g_rdpdr_device[i].handle = 0; + } return STATUS_SUCCESS; } static NTSTATUS -printer_write(HANDLE handle, uint8 * data, uint32 length, uint32 offset, uint32 * result) +printer_write(NTHANDLE handle, uint8 * data, uint32 length, uint32 offset, uint32 * result) { PRINTER *pprinter_data;