38 |
#include <sys/time.h> |
#include <sys/time.h> |
39 |
#include <dirent.h> /* opendir, closedir, readdir */ |
#include <dirent.h> /* opendir, closedir, readdir */ |
40 |
#include <time.h> |
#include <time.h> |
41 |
|
#include <errno.h> |
42 |
#include "rdesktop.h" |
#include "rdesktop.h" |
43 |
|
|
44 |
#define IRP_MJ_CREATE 0x00 |
#define IRP_MJ_CREATE 0x00 |
55 |
#define IRP_MN_QUERY_DIRECTORY 0x01 |
#define IRP_MN_QUERY_DIRECTORY 0x01 |
56 |
#define IRP_MN_NOTIFY_CHANGE_DIRECTORY 0x02 |
#define IRP_MN_NOTIFY_CHANGE_DIRECTORY 0x02 |
57 |
|
|
58 |
extern char hostname[16]; |
extern char g_hostname[16]; |
59 |
extern DEVICE_FNS serial_fns; |
extern DEVICE_FNS serial_fns; |
60 |
extern DEVICE_FNS printer_fns; |
extern DEVICE_FNS printer_fns; |
61 |
extern DEVICE_FNS parallel_fns; |
extern DEVICE_FNS parallel_fns; |
205 |
|
|
206 |
if (NULL == g_rdpdr_clientname) |
if (NULL == g_rdpdr_clientname) |
207 |
{ |
{ |
208 |
g_rdpdr_clientname = hostname; |
g_rdpdr_clientname = g_hostname; |
209 |
} |
} |
210 |
hostlen = (strlen(g_rdpdr_clientname) + 1) * 2; |
hostlen = (strlen(g_rdpdr_clientname) + 1) * 2; |
211 |
|
|
266 |
{ |
{ |
267 |
out_uint32_le(s, g_rdpdr_device[i].device_type); |
out_uint32_le(s, g_rdpdr_device[i].device_type); |
268 |
out_uint32_le(s, i); /* RDP Device ID */ |
out_uint32_le(s, i); /* RDP Device ID */ |
269 |
|
/* Is it possible to use share names longer than 8 chars? |
270 |
|
/astrand */ |
271 |
out_uint8p(s, g_rdpdr_device[i].name, 8); |
out_uint8p(s, g_rdpdr_device[i].name, 8); |
272 |
|
|
273 |
switch (g_rdpdr_device[i].device_type) |
switch (g_rdpdr_device[i].device_type) |
827 |
reconnecting. FIXME: Real |
reconnecting. FIXME: Real |
828 |
support for reconnects. */ |
support for reconnects. */ |
829 |
|
|
830 |
if (read(iorq->fd, &c, 0) != 0) |
if ((read(iorq->fd, &c, 0) != 0) && (errno == EBADF)) |
831 |
break; |
break; |
832 |
|
|
833 |
FD_SET(iorq->fd, rfds); |
FD_SET(iorq->fd, rfds); |
850 |
|
|
851 |
case IRP_MJ_WRITE: |
case IRP_MJ_WRITE: |
852 |
/* FD still valid? See above. */ |
/* FD still valid? See above. */ |
853 |
if (write(iorq->fd, &c, 0) != 0) |
if ((write(iorq->fd, &c, 0) != 0) && (errno == EBADF)) |
854 |
break; |
break; |
855 |
|
|
856 |
FD_SET(iorq->fd, wfds); |
FD_SET(iorq->fd, wfds); |