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 | 62 | HLLAPI_PACKET_ASC2EBC, |
| 63 | 63 | HLLAPI_PACKET_EBC2ASC, |
| 64 | 64 | |
| 65 | + HLLAPI_PACKET_FILE_TRANSFER, | |
| 66 | + | |
| 65 | 67 | HLLAPI_PACKET_INVALID |
| 66 | 68 | |
| 67 | 69 | } HLLAPI_PACKET; |
| ... | ... | @@ -175,6 +177,17 @@ struct hllapi_packet_set_text |
| 175 | 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 | 192 | #pragma pack() |
| 180 | 193 | ... | ... |
src/plugins/hllapi/pluginmain.c
| ... | ... | @@ -172,6 +172,22 @@ |
| 172 | 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 | 191 | static void process_input(pipe_source *source, DWORD cbRead) |
| 176 | 192 | { |
| 177 | 193 | |
| ... | ... | @@ -327,6 +343,10 @@ |
| 327 | 343 | )); |
| 328 | 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 | 350 | case HLLAPI_PACKET_GET_HOST_CHARSET: |
| 331 | 351 | send_text(source,(char *) lib3270_get_host_charset(lib3270_get_default_session_handle())); |
| 332 | 352 | break; | ... | ... |
src/pw3270/filetransfer.c
| ... | ... | @@ -173,28 +173,28 @@ static void ft_dialog_save(GtkWidget *widget, const gchar *name) |
| 173 | 173 | // Save extension based file settings |
| 174 | 174 | HKEY hKey; |
| 175 | 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 | 178 | if(RegCreateKeyEx(HKEY_CURRENT_USER,path,0,NULL,REG_OPTION_NON_VOLATILE,KEY_SET_VALUE,NULL,&hKey,&disp) == ERROR_SUCCESS) |
| 179 | 179 | { |
| 180 | 180 | DWORD value; |
| 181 | 181 | |
| 182 | - value = (DWORD) v3270_ft_dialog_get_options(widget)); | |
| 182 | + value = (DWORD) v3270_ft_dialog_get_options(widget); | |
| 183 | 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 | 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 | 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 | 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 | 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 | 198 | RegSetValueEx(hKey, "secspace", 0, REG_DWORD,(const BYTE *) &value,sizeof(value)); |
| 199 | 199 | |
| 200 | 200 | RegCloseKey(hKey); | ... | ... |
src/pw3270/ft/ftdialog.c
| ... | ... | @@ -286,6 +286,8 @@ static void test_path_exists(GtkEditable *editable, v3270FTD *dialog) |
| 286 | 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 | 293 | GtkWidget * v3270_ft_dialog_new(GtkWidget *parent, LIB3270_FT_OPTION options) | ... | ... |