if (fe_hack_self_inserting_accelerator (widget, closure, call_data)) return;
fe_upload_file_cb (Widget widget, XtPointer closure, XtPointer call_data){  MWContext *context = (MWContext *) closure;  XmString xm_title;  char *title = XP_GetString(XFE_COMMANDS_UPLOAD_FILE);  char *file, *msg;  fe_UserActivity (context);  if (fe_hack_self_inserting_accelerator (widget, closure, call_data))    return;  file = fe_ReadFileName (context, title, 0, True, 0);  /* validate filename */  if (file) {    if (!fe_isFileExist(file)) {      msg = PR_smprintf( XP_GetString( XFE_CANNOT_SEE_FILE ), file);      if (msg) {	XFE_Alert(context, msg);	XP_FREE(msg);      }      XP_FREE (file);      file = NULL;    }    else if (!fe_isFileReadable(file)) {      msg = PR_smprintf( XP_GetString( XFE_CANNOT_READ_FILE ) , file);      if (msg) {	XFE_Alert(context, msg);	XP_FREE(msg);      }      XP_FREE (file);      file = NULL;    }    else if (fe_isDir(file)) {      msg = PR_smprintf( XP_GetString( XFE_IS_A_DIRECTORY ), file);      if (msg) {	  XFE_Alert(context, msg);	  if (msg) XP_FREE(msg);      }      XP_FREE (file);      file = NULL;    }  }  if (file)    {      History_entry *he = SHIST_GetCurrent (&context->hist);      URL_Struct *url;      if (he && he->address && (XP_STRNCMP (he->address, "ftp://", 6) == 0)	  && he->address [strlen (he->address)-1] == '/')	{	  url = NET_CreateURLStruct (he->address, NET_SUPER_RELOAD);	  if (!url)	    {	      XP_FREE (file);	      return;	    }	  url->method = URL_POST_METHOD;	  url->files_to_post = XP_ALLOC (2);	  if (!url->files_to_post)	    {	      XP_FREE (file);	      return;	    }	  url->files_to_post [0] = XP_STRDUP ((const char *) file);	  url->files_to_post [1] = 0;	  fe_GetURL (context, url, FALSE);	}      XP_FREE (file);    }}