/[rdesktop]/sourceforge.net/trunk/rdesktop/rdp.c
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /sourceforge.net/trunk/rdesktop/rdp.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 865 by stargo, Tue Mar 15 11:25:50 2005 UTC revision 886 by stargo, Sat Apr 16 11:42:34 2005 UTC
# Line 49  extern int g_width; Line 49  extern int g_width;
49  extern int g_height;  extern int g_height;
50  extern BOOL g_bitmap_cache;  extern BOOL g_bitmap_cache;
51  extern BOOL g_bitmap_cache_persist_enable;  extern BOOL g_bitmap_cache_persist_enable;
52    extern BOOL g_rdp_compression;
53    
54  uint8 *g_next_packet;  uint8 *g_next_packet;
55  uint32 g_rdp_shareid;  uint32 g_rdp_shareid;
# Line 161  rdp_out_unistr(STREAM s, char *string, i Line 162  rdp_out_unistr(STREAM s, char *string, i
162  #ifdef HAVE_ICONV  #ifdef HAVE_ICONV
163          size_t ibl = strlen(string), obl = len + 2;          size_t ibl = strlen(string), obl = len + 2;
164          static iconv_t iconv_h = (iconv_t) - 1;          static iconv_t iconv_h = (iconv_t) - 1;
165          char *pin = string, *pout = s->p;          char *pin = string, *pout = (char *) s->p;
166    
167          memset(pout, 0, len + 4);          memset(pout, 0, len + 4);
168    
# Line 176  rdp_out_unistr(STREAM s, char *string, i Line 177  rdp_out_unistr(STREAM s, char *string, i
177                                          g_codepage, WINDOWS_CODEPAGE, (int) iconv_h);                                          g_codepage, WINDOWS_CODEPAGE, (int) iconv_h);
178    
179                                  g_iconv_works = False;                                  g_iconv_works = False;
180                                  return (rdp_out_unistr(s, string, len));                                  rdp_out_unistr(s, string, len);
181                                    return;
182                          }                          }
183                          if (iconv(iconv_h, (ICONV_CONST char **) &pin, &i, &pout, &o) ==                          if (iconv(iconv_h, (ICONV_CONST char **) &pin, &i, &pout, &o) ==
184                              (size_t) - 1)                              (size_t) - 1)
# Line 186  rdp_out_unistr(STREAM s, char *string, i Line 188  rdp_out_unistr(STREAM s, char *string, i
188                                  warning("rdp_out_unistr: iconv(1) fail, errno %d\n", errno);                                  warning("rdp_out_unistr: iconv(1) fail, errno %d\n", errno);
189    
190                                  g_iconv_works = False;                                  g_iconv_works = False;
191                                  return (rdp_out_unistr(s, string, len));                                  rdp_out_unistr(s, string, len);
192                                    return;
193                          }                          }
194                          pin = string;                          pin = string;
195                          pout = (char *) s->p;                          pout = (char *) s->p;
# Line 199  rdp_out_unistr(STREAM s, char *string, i Line 202  rdp_out_unistr(STREAM s, char *string, i
202                          warning("rdp_out_unistr: iconv(2) fail, errno %d\n", errno);                          warning("rdp_out_unistr: iconv(2) fail, errno %d\n", errno);
203    
204                          g_iconv_works = False;                          g_iconv_works = False;
205                          return (rdp_out_unistr(s, string, len));                          rdp_out_unistr(s, string, len);
206                            return;
207                  }                  }
208    
209                  s->p += len + 2;                  s->p += len + 2;
# Line 231  rdp_in_unistr(STREAM s, char *string, in Line 235  rdp_in_unistr(STREAM s, char *string, in
235  {  {
236  #ifdef HAVE_ICONV  #ifdef HAVE_ICONV
237          size_t ibl = uni_len, obl = uni_len;          size_t ibl = uni_len, obl = uni_len;
238          char *pin = s->p, *pout = string;          char *pin = (char *) s->p, *pout = string;
239          static iconv_t iconv_h = (iconv_t) - 1;          static iconv_t iconv_h = (iconv_t) - 1;
240    
241          if (g_iconv_works)          if (g_iconv_works)
# Line 656  rdp_out_bmpcache_caps(STREAM s) Line 660  rdp_out_bmpcache_caps(STREAM s)
660  static void  static void
661  rdp_out_bmpcache2_caps(STREAM s)  rdp_out_bmpcache2_caps(STREAM s)
662  {  {
663            uint16 cellsize;
664    
665          out_uint16_le(s, RDP_CAPSET_BMPCACHE2);          out_uint16_le(s, RDP_CAPSET_BMPCACHE2);
666          out_uint16_le(s, RDP_CAPLEN_BMPCACHE2);          out_uint16_le(s, RDP_CAPLEN_BMPCACHE2);
667    
668          out_uint16_le(s, g_bitmap_cache_persist_enable ? 2 : 0);        /* version */          out_uint16_le(s, g_bitmap_cache_persist_enable ? 2 : 0);        /* version */
669    
670          out_uint16_le(s, 0x0300);       /* flags? number of caches? */          /* Cellsize:
671               01 = 16x16, 02 = 32x32, 03 = 64x64
672               log2(cell size) - 3
673             */
674    
675            cellsize = 0x03;
676    
677            if (g_rdp_compression)
678            {
679                    switch (g_server_bpp)
680                    {
681                            case 24:
682                            case 16:
683                            case 15:
684                                    cellsize = 0x02;
685                                    break;
686                    }
687            }
688    
689            out_uint16_le(s, (0x0000 | (cellsize << 8)));   /* flags? number of caches? */
690    
691          out_uint32_le(s, BMPCACHE2_C0_CELLS);          out_uint32_le(s, BMPCACHE2_C0_CELLS);
692          out_uint32_le(s, BMPCACHE2_C1_CELLS);          out_uint32_le(s, BMPCACHE2_C1_CELLS);

Legend:
Removed from v.865  
changed lines
  Added in v.886

  ViewVC Help
Powered by ViewVC 1.1.26