Commit 18e845d5c3a43a0f66531e535421571da402f83f
1 parent
c483b7ce
Exists in
master
and in
5 other branches
Ajustes para compilar em windows
Showing
4 changed files
with
42 additions
and
7 deletions
Show diff stats
src/include/pw3270/ipcpackets.h
| @@ -62,6 +62,8 @@ | @@ -62,6 +62,8 @@ | ||
| 62 | HLLAPI_PACKET_ASC2EBC, | 62 | HLLAPI_PACKET_ASC2EBC, |
| 63 | HLLAPI_PACKET_EBC2ASC, | 63 | HLLAPI_PACKET_EBC2ASC, |
| 64 | 64 | ||
| 65 | + HLLAPI_PACKET_FILE_TRANSFER, | ||
| 66 | + | ||
| 65 | HLLAPI_PACKET_INVALID | 67 | HLLAPI_PACKET_INVALID |
| 66 | 68 | ||
| 67 | } HLLAPI_PACKET; | 69 | } HLLAPI_PACKET; |
| @@ -175,6 +177,17 @@ struct hllapi_packet_set_text | @@ -175,6 +177,17 @@ struct hllapi_packet_set_text | ||
| 175 | char text[1]; | 177 | char text[1]; |
| 176 | }; | 178 | }; |
| 177 | 179 | ||
| 180 | +struct hllapi_packet_file_transfer | ||
| 181 | +{ | ||
| 182 | + unsigned char packet_id; | ||
| 183 | + unsigned int options; | ||
| 184 | + int lrecl; | ||
| 185 | + int blksize; | ||
| 186 | + int primspace; | ||
| 187 | + int secspace; | ||
| 188 | + int dft; | ||
| 189 | + char text[1]; | ||
| 190 | +}; | ||
| 178 | 191 | ||
| 179 | #pragma pack() | 192 | #pragma pack() |
| 180 | 193 |
src/plugins/hllapi/pluginmain.c
| @@ -172,6 +172,22 @@ | @@ -172,6 +172,22 @@ | ||
| 172 | WriteFile(source->hPipe,&pkt,wrote,&wrote,NULL); | 172 | WriteFile(source->hPipe,&pkt,wrote,&wrote,NULL); |
| 173 | } | 173 | } |
| 174 | 174 | ||
| 175 | + static int do_file_transfer(struct hllapi_packet_file_transfer * source) | ||
| 176 | + { | ||
| 177 | + const gchar * local = (const char *) source->text; | ||
| 178 | + const gchar * remote = (const char *) (local+strlen(local)+1); | ||
| 179 | + | ||
| 180 | + return v3270_transfer_file( v3270_get_default_widget(), | ||
| 181 | + source->options, | ||
| 182 | + local, | ||
| 183 | + remote, | ||
| 184 | + source->lrecl, | ||
| 185 | + source->blksize, | ||
| 186 | + source->primspace, | ||
| 187 | + source->secspace, | ||
| 188 | + source->dft ); | ||
| 189 | + } | ||
| 190 | + | ||
| 175 | static void process_input(pipe_source *source, DWORD cbRead) | 191 | static void process_input(pipe_source *source, DWORD cbRead) |
| 176 | { | 192 | { |
| 177 | 193 | ||
| @@ -327,6 +343,10 @@ | @@ -327,6 +343,10 @@ | ||
| 327 | )); | 343 | )); |
| 328 | break; | 344 | break; |
| 329 | 345 | ||
| 346 | + case HLLAPI_PACKET_FILE_TRANSFER: | ||
| 347 | + send_result(source,do_file_transfer((struct hllapi_packet_file_transfer *) source)); | ||
| 348 | + break; | ||
| 349 | + | ||
| 330 | case HLLAPI_PACKET_GET_HOST_CHARSET: | 350 | case HLLAPI_PACKET_GET_HOST_CHARSET: |
| 331 | send_text(source,(char *) lib3270_get_host_charset(lib3270_get_default_session_handle())); | 351 | send_text(source,(char *) lib3270_get_host_charset(lib3270_get_default_session_handle())); |
| 332 | break; | 352 | break; |
src/pw3270/filetransfer.c
| @@ -173,28 +173,28 @@ static void ft_dialog_save(GtkWidget *widget, const gchar *name) | @@ -173,28 +173,28 @@ static void ft_dialog_save(GtkWidget *widget, const gchar *name) | ||
| 173 | // Save extension based file settings | 173 | // Save extension based file settings |
| 174 | HKEY hKey; | 174 | HKEY hKey; |
| 175 | DWORD disp; | 175 | DWORD disp; |
| 176 | - gchar * path = g_strdup_printf("%s\\%s\\%s\\%s",registry_path,g_get_application_name(),name,ext+1); | 176 | + gchar * path = g_strdup_printf("%s\\%s\\%s\\%s","SOFTWARE",g_get_application_name(),name,ext+1); |
| 177 | 177 | ||
| 178 | if(RegCreateKeyEx(HKEY_CURRENT_USER,path,0,NULL,REG_OPTION_NON_VOLATILE,KEY_SET_VALUE,NULL,&hKey,&disp) == ERROR_SUCCESS) | 178 | if(RegCreateKeyEx(HKEY_CURRENT_USER,path,0,NULL,REG_OPTION_NON_VOLATILE,KEY_SET_VALUE,NULL,&hKey,&disp) == ERROR_SUCCESS) |
| 179 | { | 179 | { |
| 180 | DWORD value; | 180 | DWORD value; |
| 181 | 181 | ||
| 182 | - value = (DWORD) v3270_ft_dialog_get_options(widget)); | 182 | + value = (DWORD) v3270_ft_dialog_get_options(widget); |
| 183 | RegSetValueEx(hKey, "options", 0, REG_DWORD,(const BYTE *) &value,sizeof(value)); | 183 | RegSetValueEx(hKey, "options", 0, REG_DWORD,(const BYTE *) &value,sizeof(value)); |
| 184 | 184 | ||
| 185 | - value = (DWORD) v3270_ft_dialog_get_dft_buffer_size(widget)); | 185 | + value = (DWORD) v3270_ft_dialog_get_dft_buffer_size(widget); |
| 186 | RegSetValueEx(hKey, "dft", 0, REG_DWORD,(const BYTE *) &value,sizeof(value)); | 186 | RegSetValueEx(hKey, "dft", 0, REG_DWORD,(const BYTE *) &value,sizeof(value)); |
| 187 | 187 | ||
| 188 | - value = (DWORD) v3270_ft_dialog_get_record_length(widget)); | 188 | + value = (DWORD) v3270_ft_dialog_get_record_length(widget); |
| 189 | RegSetValueEx(hKey, "reclen", 0, REG_DWORD,(const BYTE *) &value,sizeof(value)); | 189 | RegSetValueEx(hKey, "reclen", 0, REG_DWORD,(const BYTE *) &value,sizeof(value)); |
| 190 | 190 | ||
| 191 | - value = (DWORD) v3270_ft_dialog_get_block_size(widget)); | 191 | + value = (DWORD) v3270_ft_dialog_get_block_size(widget); |
| 192 | RegSetValueEx(hKey, "blksize", 0, REG_DWORD,(const BYTE *) &value,sizeof(value)); | 192 | RegSetValueEx(hKey, "blksize", 0, REG_DWORD,(const BYTE *) &value,sizeof(value)); |
| 193 | 193 | ||
| 194 | - value = (DWORD) v3270_ft_dialog_get_primary_space(widget)); | 194 | + value = (DWORD) v3270_ft_dialog_get_primary_space(widget); |
| 195 | RegSetValueEx(hKey, "primspace", 0, REG_DWORD,(const BYTE *) &value,sizeof(value)); | 195 | RegSetValueEx(hKey, "primspace", 0, REG_DWORD,(const BYTE *) &value,sizeof(value)); |
| 196 | 196 | ||
| 197 | - value = (DWORD) v3270_ft_dialog_get_secondary_space(widget)); | 197 | + value = (DWORD) v3270_ft_dialog_get_secondary_space(widget); |
| 198 | RegSetValueEx(hKey, "secspace", 0, REG_DWORD,(const BYTE *) &value,sizeof(value)); | 198 | RegSetValueEx(hKey, "secspace", 0, REG_DWORD,(const BYTE *) &value,sizeof(value)); |
| 199 | 199 | ||
| 200 | RegCloseKey(hKey); | 200 | RegCloseKey(hKey); |
src/pw3270/ft/ftdialog.c
| @@ -286,6 +286,8 @@ static void test_path_exists(GtkEditable *editable, v3270FTD *dialog) | @@ -286,6 +286,8 @@ static void test_path_exists(GtkEditable *editable, v3270FTD *dialog) | ||
| 286 | g_free(dirname); | 286 | g_free(dirname); |
| 287 | 287 | ||
| 288 | } | 288 | } |
| 289 | + | ||
| 290 | + gtk_widget_set_sensitive(dialog->ready,dialog->local && dialog->remote); | ||
| 289 | } | 291 | } |
| 290 | 292 | ||
| 291 | GtkWidget * v3270_ft_dialog_new(GtkWidget *parent, LIB3270_FT_OPTION options) | 293 | GtkWidget * v3270_ft_dialog_new(GtkWidget *parent, LIB3270_FT_OPTION options) |