summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjsorg71 <jsorg71>2005-07-13 01:07:00 +0000
committerjsorg71 <jsorg71>2005-07-13 01:07:00 +0000
commit2f4ea160514b89afad5f688e5fe6c03296656648 (patch)
treeefdc2247c0d874451a49e27b18d0ab8913442f00
parent666b5dd175a1cc837d6ae45d7923679ddeeed241 (diff)
downloadxrdp-proprietary-2f4ea160514b89afad5f688e5fe6c03296656648.tar.gz
xrdp-proprietary-2f4ea160514b89afad5f688e5fe6c03296656648.zip
got vnc mod working in win32
-rw-r--r--common/os_calls.c6
-rwxr-xr-xvnc/makefile_win3225
-rw-r--r--vnc/vnc.c62
-rw-r--r--xrdp/xrdp_login_wnd.c18
4 files changed, 82 insertions, 29 deletions
diff --git a/common/os_calls.c b/common/os_calls.c
index 0a4efba3..838e60ec 100644
--- a/common/os_calls.c
+++ b/common/os_calls.c
@@ -678,7 +678,7 @@ long
g_load_library(char* in)
{
#if defined(_WIN32)
- return 0;
+ return (long)LoadLibrary(in);
#else
return (long)dlopen(in, RTLD_LOCAL | RTLD_LAZY);
#endif
@@ -693,7 +693,7 @@ g_free_library(long lib)
return 0;
}
#if defined(_WIN32)
- return 0;
+ return FreeLibrary((HMODULE)lib);
#else
return dlclose((void*)lib);
#endif
@@ -709,7 +709,7 @@ g_get_proc_address(long lib, char* name)
return 0;
}
#if defined(_WIN32)
- return 0;
+ return GetProcAddress((HMODULE)lib, name);
#else
return dlsym((void*)lib, name);
#endif
diff --git a/vnc/makefile_win32 b/vnc/makefile_win32
new file mode 100755
index 00000000..69b6fcfc
--- /dev/null
+++ b/vnc/makefile_win32
@@ -0,0 +1,25 @@
+# borland windows makefile
+#
+# this assumes openssl and borland free command line tools are installed
+# this assumes c:\windows is windows directory
+#
+# run 'set PATH=c:\borland\bcc55\bin' and run 'make -f makefile_win32 all'
+#
+
+VNCOBJ = vnc.obj os_calls.obj d3des.obj
+CFLAGS = -w- -O2 -I../common -Ic:/borland/bcc55/include
+LDFLAGS = -Lc:/borland/bcc55/lib
+
+all: vnc
+
+vnc: $(VNCOBJ)
+ $(CC) $(LDFLAGS) -WD -evnc.dll $(VNCOBJ)
+
+clean:
+ del $(VNCOBJ) vnc.dll
+
+os_calls.obj:
+ $(CC) $(CFLAGS) -c ../common/os_calls.c
+
+d3des.obj:
+ $(CC) $(CFLAGS) -c ../common/d3des.c
diff --git a/vnc/vnc.c b/vnc/vnc.c
index e68aa121..02e1c0b0 100644
--- a/vnc/vnc.c
+++ b/vnc/vnc.c
@@ -24,7 +24,8 @@
/******************************************************************************/
/* taken from vncauth.c */
-void rfbEncryptBytes(char* bytes, char* passwd)
+void DEFAULT_CC
+rfbEncryptBytes(char* bytes, char* passwd)
{
char key[12];
@@ -38,7 +39,8 @@ void rfbEncryptBytes(char* bytes, char* passwd)
/******************************************************************************/
/* returns error */
-int lib_recv(struct vnc* v, char* data, int len)
+int DEFAULT_CC
+lib_recv(struct vnc* v, char* data, int len)
{
int rcvd;
@@ -80,7 +82,8 @@ int lib_recv(struct vnc* v, char* data, int len)
/*****************************************************************************/
/* returns error */
-int lib_send(struct vnc* v, char* data, int len)
+int DEFAULT_CC
+lib_send(struct vnc* v, char* data, int len)
{
int sent;
@@ -121,8 +124,9 @@ int lib_send(struct vnc* v, char* data, int len)
}
/******************************************************************************/
-int lib_mod_event(struct vnc* v, int msg, long param1, long param2,
- long param3, long param4)
+int DEFAULT_CC
+lib_mod_event(struct vnc* v, int msg, long param1, long param2,
+ long param3, long param4)
{
struct stream* s;
int key;
@@ -314,7 +318,8 @@ param1 0x%4.4x param2 0x%4.4x\n\r", msg, param1, param2);
}
//******************************************************************************
-int get_pixel_safe(char* data, int x, int y, int width, int height, int bpp)
+int DEFAULT_CC
+get_pixel_safe(char* data, int x, int y, int width, int height, int bpp)
{
int start;
int shift;
@@ -368,8 +373,9 @@ int get_pixel_safe(char* data, int x, int y, int width, int height, int bpp)
}
/******************************************************************************/
-void set_pixel_safe(char* data, int x, int y, int width, int height, int bpp,
- int pixel)
+void DEFAULT_CC
+set_pixel_safe(char* data, int x, int y, int width, int height, int bpp,
+ int pixel)
{
int start;
int shift;
@@ -417,7 +423,8 @@ void set_pixel_safe(char* data, int x, int y, int width, int height, int bpp,
}
/******************************************************************************/
-int split_color(int pixel, int* r, int* g, int* b, int bpp, int* palette)
+int DEFAULT_CC
+split_color(int pixel, int* r, int* g, int* b, int bpp, int* palette)
{
if (bpp == 8)
{
@@ -438,7 +445,8 @@ int split_color(int pixel, int* r, int* g, int* b, int bpp, int* palette)
}
/******************************************************************************/
-int make_color(int r, int g, int b, int bpp)
+int DEFAULT_CC
+make_color(int r, int g, int b, int bpp)
{
if (bpp == 24)
{
@@ -448,7 +456,8 @@ int make_color(int r, int g, int b, int bpp)
}
/******************************************************************************/
-int lib_framebuffer_update(struct vnc* v)
+int DEFAULT_CC
+lib_framebuffer_update(struct vnc* v)
{
char* data;
char* d1;
@@ -597,7 +606,8 @@ int lib_framebuffer_update(struct vnc* v)
}
/******************************************************************************/
-int lib_clip_data(struct vnc* v)
+int DEFAULT_CC
+lib_clip_data(struct vnc* v)
{
struct stream* s;
int size;
@@ -618,7 +628,8 @@ int lib_clip_data(struct vnc* v)
}
/******************************************************************************/
-int lib_palette_update(struct vnc* v)
+int DEFAULT_CC
+lib_palette_update(struct vnc* v)
{
struct stream* s;
int first_color;
@@ -667,7 +678,8 @@ int lib_palette_update(struct vnc* v)
}
/******************************************************************************/
-int lib_mod_signal(struct vnc* v)
+int DEFAULT_CC
+lib_mod_signal(struct vnc* v)
{
char type;
int error;
@@ -696,7 +708,8 @@ int lib_mod_signal(struct vnc* v)
}
/******************************************************************************/
-int lib_mod_start(struct vnc* v, int w, int h, int bpp)
+int DEFAULT_CC
+lib_mod_start(struct vnc* v, int w, int h, int bpp)
{
v->server_begin_update(v);
v->server_fill_rect(v, 0, 0, w, h, 0);
@@ -711,7 +724,8 @@ int lib_mod_start(struct vnc* v, int w, int h, int bpp)
/*
return error
*/
-int lib_mod_connect(struct vnc* v)
+int DEFAULT_CC
+lib_mod_connect(struct vnc* v)
{
char cursor_data[32 * (32 * 3)];
char cursor_mask[32 * (32 / 8)];
@@ -949,7 +963,7 @@ int lib_mod_connect(struct vnc* v)
{
out_uint8(pixel_format, 8); /* bits per pixel */
out_uint8(pixel_format, 8); /* depth */
-#if defined(B_ENDIAN)
+#if defined(B_ENDIAN)
out_uint8(pixel_format, 1); /* big endian */
#else
out_uint8(pixel_format, 0); /* big endian */
@@ -967,7 +981,7 @@ int lib_mod_connect(struct vnc* v)
{
out_uint8(pixel_format, 16); /* bits per pixel */
out_uint8(pixel_format, 16); /* depth */
-#if defined(B_ENDIAN)
+#if defined(B_ENDIAN)
out_uint8(pixel_format, 1); /* big endian */
#else
out_uint8(pixel_format, 0); /* big endian */
@@ -1044,7 +1058,8 @@ int lib_mod_connect(struct vnc* v)
}
/******************************************************************************/
-int lib_mod_end(struct vnc* v)
+int DEFAULT_CC
+lib_mod_end(struct vnc* v)
{
if (v->vnc_desktop != 0)
{
@@ -1053,7 +1068,8 @@ int lib_mod_end(struct vnc* v)
}
/******************************************************************************/
-int lib_mod_set_param(struct vnc* v, char* name, char* value)
+int DEFAULT_CC
+lib_mod_set_param(struct vnc* v, char* name, char* value)
{
if (g_strcmp(name, "username") == 0)
{
@@ -1075,7 +1091,8 @@ int lib_mod_set_param(struct vnc* v, char* name, char* value)
}
/******************************************************************************/
-struct vnc* mod_init(void)
+struct vnc* EXPORT_CC
+mod_init(void)
{
struct vnc* v;
@@ -1093,7 +1110,8 @@ struct vnc* mod_init(void)
}
/******************************************************************************/
-int mod_exit(struct vnc* v)
+int EXPORT_CC
+mod_exit(struct vnc* v)
{
if (v == 0)
{
diff --git a/xrdp/xrdp_login_wnd.c b/xrdp/xrdp_login_wnd.c
index 163705f9..cdc1b7d6 100644
--- a/xrdp/xrdp_login_wnd.c
+++ b/xrdp/xrdp_login_wnd.c
@@ -94,6 +94,8 @@ static int APP_CC
xrdp_wm_setup_mod(struct xrdp_wm* self,
struct xrdp_mod_data* mod_data)
{
+ void* func;
+
if (self == 0)
{
return 1;
@@ -103,10 +105,18 @@ xrdp_wm_setup_mod(struct xrdp_wm* self,
self->mod_handle = g_load_library(mod_data->lib);
if (self->mod_handle != 0)
{
- self->mod_init = (struct xrdp_mod* (*)(void))
- g_get_proc_address(self->mod_handle, "mod_init");
- self->mod_exit = (int (*)(struct xrdp_mod*))
- g_get_proc_address(self->mod_handle, "mod_exit");
+ func = g_get_proc_address(self->mod_handle, "mod_init");
+ if (func == 0)
+ {
+ func = g_get_proc_address(self->mod_handle, "_mod_init");
+ }
+ self->mod_init = (struct xrdp_mod* (*)(void))func;
+ func = g_get_proc_address(self->mod_handle, "mod_exit");
+ if (func == 0)
+ {
+ func = g_get_proc_address(self->mod_handle, "_mod_exit");
+ }
+ self->mod_exit = (int (*)(struct xrdp_mod*))func;
if (self->mod_init != 0 && self->mod_exit != 0)
{
self->mod = self->mod_init();