From 18e845d5c3a43a0f66531e535421571da402f83f Mon Sep 17 00:00:00 2001 From: perry.werneck@gmail.com Date: Mon, 2 Dec 2013 20:35:10 +0000 Subject: [PATCH] Ajustes para compilar em windows --- src/include/pw3270/ipcpackets.h | 13 +++++++++++++ src/plugins/hllapi/pluginmain.c | 20 ++++++++++++++++++++ src/pw3270/filetransfer.c | 14 +++++++------- src/pw3270/ft/ftdialog.c | 2 ++ 4 files changed, 42 insertions(+), 7 deletions(-) diff --git a/src/include/pw3270/ipcpackets.h b/src/include/pw3270/ipcpackets.h index 6a5fa29..3c6c913 100644 --- a/src/include/pw3270/ipcpackets.h +++ b/src/include/pw3270/ipcpackets.h @@ -62,6 +62,8 @@ HLLAPI_PACKET_ASC2EBC, HLLAPI_PACKET_EBC2ASC, + HLLAPI_PACKET_FILE_TRANSFER, + HLLAPI_PACKET_INVALID } HLLAPI_PACKET; @@ -175,6 +177,17 @@ struct hllapi_packet_set_text char text[1]; }; +struct hllapi_packet_file_transfer +{ + unsigned char packet_id; + unsigned int options; + int lrecl; + int blksize; + int primspace; + int secspace; + int dft; + char text[1]; +}; #pragma pack() diff --git a/src/plugins/hllapi/pluginmain.c b/src/plugins/hllapi/pluginmain.c index a493513..73b77c7 100644 --- a/src/plugins/hllapi/pluginmain.c +++ b/src/plugins/hllapi/pluginmain.c @@ -172,6 +172,22 @@ WriteFile(source->hPipe,&pkt,wrote,&wrote,NULL); } + static int do_file_transfer(struct hllapi_packet_file_transfer * source) + { + const gchar * local = (const char *) source->text; + const gchar * remote = (const char *) (local+strlen(local)+1); + + return v3270_transfer_file( v3270_get_default_widget(), + source->options, + local, + remote, + source->lrecl, + source->blksize, + source->primspace, + source->secspace, + source->dft ); + } + static void process_input(pipe_source *source, DWORD cbRead) { @@ -327,6 +343,10 @@ )); break; + case HLLAPI_PACKET_FILE_TRANSFER: + send_result(source,do_file_transfer((struct hllapi_packet_file_transfer *) source)); + break; + case HLLAPI_PACKET_GET_HOST_CHARSET: send_text(source,(char *) lib3270_get_host_charset(lib3270_get_default_session_handle())); break; diff --git a/src/pw3270/filetransfer.c b/src/pw3270/filetransfer.c index 8af429c..fbe614f 100644 --- a/src/pw3270/filetransfer.c +++ b/src/pw3270/filetransfer.c @@ -173,28 +173,28 @@ static void ft_dialog_save(GtkWidget *widget, const gchar *name) // Save extension based file settings HKEY hKey; DWORD disp; - gchar * path = g_strdup_printf("%s\\%s\\%s\\%s",registry_path,g_get_application_name(),name,ext+1); + gchar * path = g_strdup_printf("%s\\%s\\%s\\%s","SOFTWARE",g_get_application_name(),name,ext+1); if(RegCreateKeyEx(HKEY_CURRENT_USER,path,0,NULL,REG_OPTION_NON_VOLATILE,KEY_SET_VALUE,NULL,&hKey,&disp) == ERROR_SUCCESS) { DWORD value; - value = (DWORD) v3270_ft_dialog_get_options(widget)); + value = (DWORD) v3270_ft_dialog_get_options(widget); RegSetValueEx(hKey, "options", 0, REG_DWORD,(const BYTE *) &value,sizeof(value)); - value = (DWORD) v3270_ft_dialog_get_dft_buffer_size(widget)); + value = (DWORD) v3270_ft_dialog_get_dft_buffer_size(widget); RegSetValueEx(hKey, "dft", 0, REG_DWORD,(const BYTE *) &value,sizeof(value)); - value = (DWORD) v3270_ft_dialog_get_record_length(widget)); + value = (DWORD) v3270_ft_dialog_get_record_length(widget); RegSetValueEx(hKey, "reclen", 0, REG_DWORD,(const BYTE *) &value,sizeof(value)); - value = (DWORD) v3270_ft_dialog_get_block_size(widget)); + value = (DWORD) v3270_ft_dialog_get_block_size(widget); RegSetValueEx(hKey, "blksize", 0, REG_DWORD,(const BYTE *) &value,sizeof(value)); - value = (DWORD) v3270_ft_dialog_get_primary_space(widget)); + value = (DWORD) v3270_ft_dialog_get_primary_space(widget); RegSetValueEx(hKey, "primspace", 0, REG_DWORD,(const BYTE *) &value,sizeof(value)); - value = (DWORD) v3270_ft_dialog_get_secondary_space(widget)); + value = (DWORD) v3270_ft_dialog_get_secondary_space(widget); RegSetValueEx(hKey, "secspace", 0, REG_DWORD,(const BYTE *) &value,sizeof(value)); RegCloseKey(hKey); diff --git a/src/pw3270/ft/ftdialog.c b/src/pw3270/ft/ftdialog.c index b90992c..15892f4 100644 --- a/src/pw3270/ft/ftdialog.c +++ b/src/pw3270/ft/ftdialog.c @@ -286,6 +286,8 @@ static void test_path_exists(GtkEditable *editable, v3270FTD *dialog) g_free(dirname); } + + gtk_widget_set_sensitive(dialog->ready,dialog->local && dialog->remote); } GtkWidget * v3270_ft_dialog_new(GtkWidget *parent, LIB3270_FT_OPTION options) -- libgit2 0.21.2