CVS: rdesktop seamless.c,1.1.2.15,1.1.2.16

Pierre Ossman <[email protected]> Mon, 20 Mar 2006 02:32:00 -0800
Newsgroups gmane.network.rdesktop.cvs
Message-ID <[email protected]>
Update of /cvsroot/rdesktop/rdesktop
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29290

Modified Files:
      Tag: seamlessrdp-branch
	seamless.c 
Log Message:
Add serial numbers to protocol.


Index: seamless.c
===================================================================
RCS file: /cvsroot/rdesktop/rdesktop/Attic/seamless.c,v
retrieving revision 1.1.2.15
retrieving revision 1.1.2.16
diff -C2 -d -r1.1.2.15 -r1.1.2.16
*** seamless.c	17 Mar 2006 12:39:09 -0000	1.1.2.15
--- seamless.c	20 Mar 2006 10:31:58 -0000	1.1.2.16
***************
*** 21,24 ****
--- 21,25 ----
  #include "rdesktop.h"
  #include <stdarg.h>
+ #include <assert.h>
  
  /* #define WITH_DEBUG_SEAMLESS */
***************
*** 32,35 ****
--- 33,37 ----
  extern BOOL g_seamless_rdp;
  static VCHANNEL *seamless_channel;
+ static unsigned int seamless_serial;
  
  static char *
***************
*** 82,97 ****
  	{
  		unsigned long parent;
! 		if (!tok4)
  			return False;
  
! 		id = strtoul(tok2, &endptr, 0);
  		if (*endptr)
  			return False;
  
! 		parent = strtoul(tok3, &endptr, 0);
  		if (*endptr)
  			return False;
  
! 		flags = strtoul(tok4, &endptr, 0);
  		if (*endptr)
  			return False;
--- 84,99 ----
  	{
  		unsigned long parent;
! 		if (!tok5)
  			return False;
  
! 		id = strtoul(tok3, &endptr, 0);
  		if (*endptr)
  			return False;
  
! 		parent = strtoul(tok4, &endptr, 0);
  		if (*endptr)
  			return False;
  
! 		flags = strtoul(tok5, &endptr, 0);
  		if (*endptr)
  			return False;
***************
*** 101,112 ****
  	else if (!strcmp("DESTROY", tok1))
  	{
! 		if (!tok3)
  			return False;
  
! 		id = strtoul(tok2, &endptr, 0);
  		if (*endptr)
  			return False;
  
! 		flags = strtoul(tok3, &endptr, 0);
  		if (*endptr)
  			return False;
--- 103,114 ----
  	else if (!strcmp("DESTROY", tok1))
  	{
! 		if (!tok4)
  			return False;
  
! 		id = strtoul(tok3, &endptr, 0);
  		if (*endptr)
  			return False;
  
! 		flags = strtoul(tok4, &endptr, 0);
  		if (*endptr)
  			return False;
***************
*** 123,148 ****
  		int x, y, width, height;
  
! 		if (!tok7)
  			return False;
  
! 		id = strtoul(tok2, &endptr, 0);
  		if (*endptr)
  			return False;
  
! 		x = strtol(tok3, &endptr, 0);
  		if (*endptr)
  			return False;
! 		y = strtol(tok4, &endptr, 0);
  		if (*endptr)
  			return False;
  
! 		width = strtol(tok5, &endptr, 0);
  		if (*endptr)
  			return False;
! 		height = strtol(tok6, &endptr, 0);
  		if (*endptr)
  			return False;
  
! 		flags = strtoul(tok7, &endptr, 0);
  		if (*endptr)
  			return False;
--- 125,150 ----
  		int x, y, width, height;
  
! 		if (!tok8)
  			return False;
  
! 		id = strtoul(tok3, &endptr, 0);
  		if (*endptr)
  			return False;
  
! 		x = strtol(tok4, &endptr, 0);
  		if (*endptr)
  			return False;
! 		y = strtol(tok5, &endptr, 0);
  		if (*endptr)
  			return False;
  
! 		width = strtol(tok6, &endptr, 0);
  		if (*endptr)
  			return False;
! 		height = strtol(tok7, &endptr, 0);
  		if (*endptr)
  			return False;
  
! 		flags = strtoul(tok8, &endptr, 0);
  		if (*endptr)
  			return False;
***************
*** 154,166 ****
  		unsigned long behind;
  
! 		id = strtoul(tok2, &endptr, 0);
  		if (*endptr)
  			return False;
  
! 		behind = strtoul(tok3, &endptr, 0);
  		if (*endptr)
  			return False;
  
! 		flags = strtoul(tok4, &endptr, 0);
  		if (*endptr)
  			return False;
--- 156,168 ----
  		unsigned long behind;
  
! 		id = strtoul(tok3, &endptr, 0);
  		if (*endptr)
  			return False;
  
! 		behind = strtoul(tok4, &endptr, 0);
  		if (*endptr)
  			return False;
  
! 		flags = strtoul(tok5, &endptr, 0);
  		if (*endptr)
  			return False;
***************
*** 170,185 ****
  	else if (!strcmp("TITLE", tok1))
  	{
! 		if (!tok4)
  			return False;
  
! 		id = strtoul(tok2, &endptr, 0);
  		if (*endptr)
  			return False;
  
! 		flags = strtoul(tok4, &endptr, 0);
  		if (*endptr)
  			return False;
  
! 		ui_seamless_settitle(id, tok3, flags);
  	}
  	else if (!strcmp("STATE", tok1))
--- 172,187 ----
  	else if (!strcmp("TITLE", tok1))
  	{
! 		if (!tok5)
  			return False;
  
! 		id = strtoul(tok3, &endptr, 0);
  		if (*endptr)
  			return False;
  
! 		flags = strtoul(tok5, &endptr, 0);
  		if (*endptr)
  			return False;
  
! 		ui_seamless_settitle(id, tok4, flags);
  	}
  	else if (!strcmp("STATE", tok1))
***************
*** 187,202 ****
  		unsigned int state;
  
! 		if (!tok4)
  			return False;
  
! 		id = strtoul(tok2, &endptr, 0);
  		if (*endptr)
  			return False;
  
! 		state = strtoul(tok3, &endptr, 0);
  		if (*endptr)
  			return False;
  
! 		flags = strtoul(tok4, &endptr, 0);
  		if (*endptr)
  			return False;
--- 189,204 ----
  		unsigned int state;
  
! 		if (!tok5)
  			return False;
  
! 		id = strtoul(tok3, &endptr, 0);
  		if (*endptr)
  			return False;
  
! 		state = strtoul(tok4, &endptr, 0);
  		if (*endptr)
  			return False;
  
! 		flags = strtoul(tok5, &endptr, 0);
  		if (*endptr)
  			return False;
***************
*** 210,217 ****
  	else if (!strcmp("SYNCBEGIN", tok1))
  	{
! 		if (!tok2)
  			return False;
  
! 		flags = strtoul(tok2, &endptr, 0);
  		if (*endptr)
  			return False;
--- 212,219 ----
  	else if (!strcmp("SYNCBEGIN", tok1))
  	{
! 		if (!tok3)
  			return False;
  
! 		flags = strtoul(tok3, &endptr, 0);
  		if (*endptr)
  			return False;
***************
*** 221,228 ****
  	else if (!strcmp("SYNCEND", tok1))
  	{
! 		if (!tok2)
  			return False;
  
! 		flags = strtoul(tok2, &endptr, 0);
  		if (*endptr)
  			return False;
--- 223,230 ----
  	else if (!strcmp("SYNCEND", tok1))
  	{
! 		if (!tok3)
  			return False;
  
! 		flags = strtoul(tok3, &endptr, 0);
  		if (*endptr)
  			return False;
***************
*** 232,239 ****
  	else if (!strcmp("HELLO", tok1))
  	{
! 		if (!tok2)
  			return False;
  
! 		flags = strtoul(tok2, &endptr, 0);
  		if (*endptr)
  			return False;
--- 234,241 ----
  	else if (!strcmp("HELLO", tok1))
  	{
! 		if (!tok3)
  			return False;
  
! 		flags = strtoul(tok3, &endptr, 0);
  		if (*endptr)
  			return False;
***************
*** 287,290 ****
--- 289,294 ----
  		return False;
  
+ 	seamless_serial = 0;
+ 
  	seamless_channel =
  		channel_register("seamrdp", CHANNEL_OPTION_INITIALIZED | CHANNEL_OPTION_ENCRYPT_RDP,
***************
*** 295,312 ****
  
  static void
! seamless_send(const char *format, ...)
  {
  	STREAM s;
  	size_t len;
  	va_list argp;
! 	char buf[1024];
  
  	va_start(argp, format);
! 	len = vsnprintf(buf, sizeof(buf), format, argp);
  	va_end(argp);
  
  	s = channel_init(seamless_channel, len);
  	out_uint8p(s, buf, len) s_mark_end(s);
  
  	DEBUG_SEAMLESS(("SeamlessRDP sending:%s", buf));
  
--- 299,327 ----
  
  static void
! seamless_send(const char *command, const char *format, ...)
  {
  	STREAM s;
  	size_t len;
  	va_list argp;
! 	char buf[1025];
! 
! 	len = snprintf(buf, sizeof(buf) - 1, "%s,%u,", command, seamless_serial);
! 
! 	assert(len < (sizeof(buf) - 1));
  
  	va_start(argp, format);
! 	len += vsnprintf(buf + len, sizeof(buf) - len - 1, format, argp);
  	va_end(argp);
  
+ 	assert(len < (sizeof(buf) - 1));
+ 
+ 	buf[len] = '\n';
+ 	buf[len + 1] = '\0';
+ 
  	s = channel_init(seamless_channel, len);
  	out_uint8p(s, buf, len) s_mark_end(s);
  
+ 	seamless_serial++;
+ 
  	DEBUG_SEAMLESS(("SeamlessRDP sending:%s", buf));
  
***************
*** 326,330 ****
  		return;
  
! 	seamless_send("SYNC\n");
  }
  
--- 341,345 ----
  		return;
  
! 	seamless_send("SYNC", "");
  }
  
***************
*** 336,340 ****
  		return;
  
! 	seamless_send("STATE,0x%08lx,0x%x,0x%lx\n", id, state, flags);
  }
  
--- 351,355 ----
  		return;
  
! 	seamless_send("STATE", "0x%08lx,0x%x,0x%lx", id, state, flags);
  }
  
***************
*** 343,347 ****
  seamless_send_position(unsigned long id, int x, int y, int width, int height, unsigned long flags)
  {
! 	seamless_send("POSITION,0x%08lx,%d,%d,%d,%d,0x%lx\n", id, x, y, width, height, flags);
  }
  
--- 358,362 ----
  seamless_send_position(unsigned long id, int x, int y, int width, int height, unsigned long flags)
  {
! 	seamless_send("POSITION", "0x%08lx,%d,%d,%d,%d,0x%lx", id, x, y, width, height, flags);
  }
  
***************
*** 363,367 ****
  }
  
- 
  void
  seamless_send_zchange(unsigned long id, unsigned long below, unsigned long flags)
--- 378,381 ----
***************
*** 370,374 ****
  		return;
  
! 	seamless_send("ZCHANGE,0x%08lx,0x%08lx,0x%lx\n", id, below, flags);
  }
  
--- 384,388 ----
  		return;
  
! 	seamless_send("ZCHANGE", "0x%08lx,0x%08lx,0x%lx", id, below, flags);
  }
  
***************
*** 380,383 ****
  		return;
  
! 	seamless_send("FOCUS,0x%08lx,0x%lx\n", id, flags);
  }
--- 394,397 ----
  		return;
  
! 	seamless_send("FOCUS", "0x%08lx,0x%lx", id, flags);
  }



-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642