Commit c8809203852e988a8c2052a8554b4bbe67fd39cd

Authored by Perry Werneck
1 parent d43bde4c

Modificando apresentação de mensagem em caso de erro ao iniciar transferência de…

… arquivos para compatibilizar com o novo diálogo.
src/include/lib3270/filetransfer.h
@@ -162,11 +162,12 @@ @@ -162,11 +162,12 @@
162 * @param primspace 162 * @param primspace
163 * @param secspace 163 * @param secspace
164 * @param dft 164 * @param dft
  165 + * @param msg Pointer to receive message text.
165 * 166 *
166 * @return Filetransfer handle if ok, NULL if failed 167 * @return Filetransfer handle if ok, NULL if failed
167 * 168 *
168 */ 169 */
169 - LIB3270_EXPORT H3270FT * lib3270_ft_new(H3270 *hSession, LIB3270_FT_OPTION flags, const char *local, const char *remote, int lrecl, int blksize, int primspace, int secspace, int dft); 170 + LIB3270_EXPORT H3270FT * lib3270_ft_new(H3270 *hSession, LIB3270_FT_OPTION flags, const char *local, const char *remote, int lrecl, int blksize, int primspace, int secspace, int dft, const char **msg);
170 171
171 LIB3270_EXPORT int lib3270_ft_start(H3270 *hSession); 172 LIB3270_EXPORT int lib3270_ft_start(H3270 *hSession);
172 LIB3270_EXPORT int lib3270_ft_destroy(H3270 *hSession); 173 LIB3270_EXPORT int lib3270_ft_destroy(H3270 *hSession);
src/lib3270/ft.c
@@ -178,8 +178,21 @@ static void set_ft_state(H3270FT *session, LIB3270_FT_STATE state); @@ -178,8 +178,21 @@ static void set_ft_state(H3270FT *session, LIB3270_FT_STATE state);
178 178
179 } 179 }
180 180
  181 + static H3270FT * ft_creation_failed(H3270 *session, int rc, const char **dest, const char *message) {
181 182
182 - LIB3270_EXPORT H3270FT * lib3270_ft_new(H3270 *session, LIB3270_FT_OPTION flags, const char *local, const char *remote, int lrecl, int blksize, int primspace, int secspace, int dft) 183 + errno = rc;
  184 +
  185 + if(!dest) {
  186 + // Não tem destino para a mensagem, apresenta
  187 + lib3270_popup_dialog(session, LIB3270_NOTIFY_ERROR, _( "Request failed" ), _( "Can't start file transfer." ), "%s", message);
  188 + } else {
  189 + *dest = message;
  190 + }
  191 +
  192 + return NULL;
  193 + }
  194 +
  195 + LIB3270_EXPORT H3270FT * lib3270_ft_new(H3270 *session, LIB3270_FT_OPTION flags, const char *local, const char *remote, int lrecl, int blksize, int primspace, int secspace, int dft, const char **message)
183 { 196 {
184 static const unsigned short asc2ft[256] = 197 static const unsigned short asc2ft[256] =
185 { 198 {
@@ -229,40 +242,18 @@ static void set_ft_state(H3270FT *session, LIB3270_FT_STATE state); @@ -229,40 +242,18 @@ static void set_ft_state(H3270FT *session, LIB3270_FT_STATE state);
229 // trace("%s(%s)",__FUNCTION__,local); 242 // trace("%s(%s)",__FUNCTION__,local);
230 if(!lib3270_connected(session)) 243 if(!lib3270_connected(session))
231 { 244 {
232 - lib3270_popup_dialog( session,  
233 - LIB3270_NOTIFY_ERROR,  
234 - _( "Request failed" ),  
235 - _( "Can't start file transfer." ),  
236 - "%s",  
237 - _( "Disconnected from host." ));  
238 - errno = ENOTCONN;  
239 - return NULL; 245 + return ft_creation_failed(session,ENOTCONN,message,_( "Disconnected from host." ));
240 } 246 }
241 247
242 if(ftHandle) 248 if(ftHandle)
243 { 249 {
244 - lib3270_popup_dialog( session,  
245 - LIB3270_NOTIFY_ERROR,  
246 - _( "Request failed" ),  
247 - _( "Can't start file transfer." ),  
248 - "%s",  
249 - _( "File transfer is already active in this session." ));  
250 -  
251 - errno = EBUSY;  
252 - return NULL; 250 + return ft_creation_failed(session,EBUSY,message,_( "File transfer is already active in this session." ));
253 } 251 }
254 252
255 // Check remote file 253 // Check remote file
256 if(!*remote) 254 if(!*remote)
257 { 255 {
258 - lib3270_popup_dialog( session,  
259 - LIB3270_NOTIFY_ERROR,  
260 - _( "Request failed" ),  
261 - _( "Can't start file transfer." ),  
262 - "%s",  
263 - _( "The remote file name is invalid." ));  
264 - errno = EINVAL;  
265 - return NULL; 256 + return ft_creation_failed(session,EINVAL,message,_( "The remote file name is invalid." ));
266 } 257 }
267 258
268 // Open local file 259 // Open local file
@@ -274,13 +265,7 @@ static void set_ft_state(H3270FT *session, LIB3270_FT_STATE state); @@ -274,13 +265,7 @@ static void set_ft_state(H3270FT *session, LIB3270_FT_STATE state);
274 265
275 if(!ft_local_file) 266 if(!ft_local_file)
276 { 267 {
277 - lib3270_popup_dialog( session,  
278 - LIB3270_NOTIFY_ERROR,  
279 - _( "Request failed" ),  
280 - _( "Can't open local file." ),  
281 - "%s",  
282 - strerror(errno));  
283 - return NULL; 268 + return ft_creation_failed(session,errno,message,strerror(errno));
284 } 269 }
285 270
286 // Set options 271 // Set options
src/pw3270/filetransfer.c
@@ -238,7 +238,7 @@ gint v3270_transfer_file(GtkWidget *widget, LIB3270_FT_OPTION options, const gch @@ -238,7 +238,7 @@ gint v3270_transfer_file(GtkWidget *widget, LIB3270_FT_OPTION options, const gch
238 { 238 {
239 g_return_val_if_fail(GTK_IS_V3270(widget),0); 239 g_return_val_if_fail(GTK_IS_V3270(widget),0);
240 240
241 - H3270FT * ft = lib3270_ft_new(v3270_get_session(widget),options,local,remote,lrecl,blksize,primspace,secspace,dft); 241 + H3270FT * ft = lib3270_ft_new(v3270_get_session(widget),options,local,remote,lrecl,blksize,primspace,secspace,dft,NULL);
242 242
243 if(!ft) 243 if(!ft)
244 return -1; 244 return -1;