Made it possible to set the client name displayed to the right of the

redirected disks (in Windows explorer) using -r:clientname=<client name>.


git-svn-id: svn://svn.code.sf.net/p/rdesktop/code/trunk/rdesktop@645 423420c4-83ab-492f-b58f-81f9feb106b5
This commit is contained in:
Erik Forsberg 2004-04-02 15:34:38 +00:00
parent c3defe8dd7
commit fd67245798
2 changed files with 14 additions and 2 deletions

View File

@ -79,6 +79,7 @@ BOOL g_rdpsnd = False;
extern RDPDR_DEVICE g_rdpdr_device[];
extern uint32 g_num_devices;
extern char * g_rdpdr_clientname;
#ifdef RDP2VNC
extern int rfb_port;
@ -130,6 +131,8 @@ usage(char *program)
fprintf(stderr,
" '-r disk:A=/mnt/floppy': enable redirection of /mnt/floppy to A:\n");
fprintf(stderr, " or A=/mnt/floppy,D=/mnt/cdrom'\n");
fprintf(stderr, " '-r clientname=<client name>': Set the client name displayed\n");
fprintf(stderr, " for redirected disks\n");
fprintf(stderr,
" '-r lptport:LPT1=/dev/lp0': enable parallel redirection of /dev/lp0 to LPT1\n");
fprintf(stderr, " or LPT1=/dev/lp0,LPT2=/dev/lp1\n");
@ -493,6 +496,11 @@ main(int argc, char *argv[])
{
printer_enum_devices(&g_num_devices, optarg + 7);
}
else if (strncmp("clientname", optarg, 7) == 0)
{
g_rdpdr_clientname = xmalloc(strlen(optarg+11)+1);
strcpy(g_rdpdr_clientname, optarg + 11);
}
else
{
warning("Unknown -r argument\n\n\tPossible arguments are: comport, disk, lptport, printer, sound\n");

View File

@ -39,6 +39,7 @@ uint32 g_num_devices;
/* Table with information about rdpdr devices */
RDPDR_DEVICE g_rdpdr_device[RDPDR_MAX_DEVICES];
char * g_rdpdr_clientname = NULL;
/* Used to store incoming io request, until they are ready to be completed */
/* using a linked list ensures that they are processed in the right order, */
@ -168,7 +169,10 @@ void
rdpdr_send_name(void)
{
uint8 magic[4] = "rDNC";
uint32 hostlen = (strlen(hostname) + 1) * 2;
if (NULL == g_rdpdr_clientname) {
g_rdpdr_clientname = hostname;
}
uint32 hostlen = (strlen(g_rdpdr_clientname) + 1) * 2;
STREAM s;
s = channel_init(rdpdr_channel, 16 + hostlen);
@ -177,7 +181,7 @@ rdpdr_send_name(void)
out_uint16_le(s, 0x72);
out_uint32(s, 0);
out_uint32_le(s, hostlen);
rdp_out_unistr(s, hostname, hostlen - 2);
rdp_out_unistr(s, g_rdpdr_clientname, hostlen - 2);
s_mark_end(s);
channel_send(s, rdpdr_channel);
}