Commit 67a51e3a364a5c26008d1366c70e5a9a2bee7789

Authored by Perry Werneck
1 parent 25546cf9

Exporting "save" options.

src/core/session.c
... ... @@ -192,12 +192,18 @@ static void set_cursor(H3270 GNUC_UNUSED(*session), LIB3270_POINTER GNUC_UNUSED(
192 192 {
193 193 }
194 194  
195   -static int print(H3270 *session, LIB3270_PRINT_MODE GNUC_UNUSED(mode))
  195 +static int print(H3270 *session, LIB3270_CONTENT_OPTION GNUC_UNUSED(mode))
196 196 {
197 197 lib3270_write_log(session, "print", "%s", "Printing is unavailable");
198 198 return errno = ENOTSUP;
199 199 }
200 200  
  201 +static int save(H3270 *session, LIB3270_CONTENT_OPTION GNUC_UNUSED(mode), const char GNUC_UNUSED(*filename))
  202 +{
  203 + lib3270_write_log(session, "save", "%s", "Saving is unavailable");
  204 + return errno = ENOTSUP;
  205 +}
  206 +
201 207 static void message(H3270 *session, LIB3270_NOTIFY GNUC_UNUSED(id), const char *title, const char *msg, const char *text)
202 208 {
203 209 #ifdef ANDROID
... ... @@ -301,6 +307,7 @@ void lib3270_reset_callbacks(H3270 *hSession)
301 307 hSession->cbk.autostart = nop;
302 308 hSession->cbk.set_timer = set_timer;
303 309 hSession->cbk.print = print;
  310 + hSession->cbk.save = save;
304 311 hSession->cbk.set_peer_certificate = set_peer_certificate;
305 312 hSession->cbk.update_luname = default_update_luname;
306 313  
... ...
src/core/util.c
... ... @@ -593,28 +593,51 @@ void lib3270_popup_an_errno(H3270 *hSession, int errn, const char *fmt, ...)
593 593  
594 594 }
595 595  
596   -LIB3270_EXPORT int lib3270_print(H3270 *hSession, LIB3270_PRINT_MODE mode)
  596 +LIB3270_EXPORT int lib3270_print(H3270 *hSession, LIB3270_CONTENT_OPTION mode)
597 597 {
598 598 return hSession->cbk.print(hSession, mode);
599 599 }
600 600  
601 601 LIB3270_EXPORT int lib3270_print_all(H3270 *hSession)
602 602 {
603   - return lib3270_print(hSession,LIB3270_PRINT_ALL);
  603 + return lib3270_print(hSession,LIB3270_CONTENT_ALL);
604 604 }
605 605  
606 606 LIB3270_EXPORT int lib3270_print_selected(H3270 *hSession)
607 607 {
608 608 if(lib3270_has_selection(hSession))
609   - return lib3270_print(hSession,LIB3270_PRINT_SELECTED);
  609 + return lib3270_print(hSession,LIB3270_CONTENT_SELECTED);
610 610 return errno = ENODATA;
611 611 }
612 612  
613 613 LIB3270_EXPORT int lib3270_print_copy(H3270 *hSession)
614 614 {
615   - return lib3270_print(hSession,LIB3270_PRINT_COPY);
  615 + return lib3270_print(hSession,LIB3270_CONTENT_COPY);
616 616 }
617 617  
  618 +LIB3270_EXPORT int lib3270_save(H3270 *hSession, LIB3270_CONTENT_OPTION mode, const char *filename)
  619 +{
  620 + return hSession->cbk.save(hSession, mode, filename);
  621 +}
  622 +
  623 +LIB3270_EXPORT int lib3270_save_all(H3270 *hSession, const char *filename)
  624 +{
  625 + return lib3270_save(hSession,LIB3270_CONTENT_ALL,filename);
  626 +}
  627 +
  628 +LIB3270_EXPORT int lib3270_save_selected(H3270 *hSession, const char *filename)
  629 +{
  630 + if(lib3270_has_selection(hSession))
  631 + return lib3270_save(hSession,LIB3270_CONTENT_SELECTED,filename);
  632 + return errno = ENODATA;
  633 +}
  634 +
  635 +LIB3270_EXPORT int lib3270_save_copy(H3270 *hSession, const char *filename)
  636 +{
  637 + return lib3270_save(hSession,LIB3270_CONTENT_COPY,filename);
  638 +}
  639 +
  640 +
618 641 LIB3270_EXPORT LIB3270_POINTER lib3270_get_pointer(H3270 *hSession, int baddr)
619 642 {
620 643 static const struct _ptr {
... ...
src/include/lib3270.h
... ... @@ -84,15 +84,15 @@
84 84 #define LIB3270_LUNAME_LENGTH 16
85 85  
86 86 /**
87   - * @brief Print modes.
  87 + * @brief Selection mode.
88 88 *
89 89 */
90   - typedef enum _lib3270_print_mode
  90 + typedef enum _lib3270_content_option
91 91 {
92   - LIB3270_PRINT_ALL,
93   - LIB3270_PRINT_SELECTED,
94   - LIB3270_PRINT_COPY
95   - } LIB3270_PRINT_MODE;
  92 + LIB3270_CONTENT_ALL, ///< @brief Get all the terminal data.
  93 + LIB3270_CONTENT_SELECTED, ///< @brief Get only selected contents.
  94 + LIB3270_CONTENT_COPY ///< @brief Get internal copy.
  95 + } LIB3270_CONTENT_OPTION;
96 96  
97 97 /**
98 98 * @brief Character attributes.
... ... @@ -784,18 +784,33 @@
784 784 * @brief Print page
785 785 *
786 786 * @param hSession Session Handle.
787   - * @param mode Print mode.
  787 + * @param mode Content option.
788 788 *
789 789 * @return 0 if ok, error code if not.
790 790 *
791 791 */
792   - LIB3270_EXPORT int lib3270_print(H3270 *hSession, LIB3270_PRINT_MODE mode);
  792 + LIB3270_EXPORT int lib3270_print(H3270 *hSession, LIB3270_CONTENT_OPTION mode);
793 793  
794 794 LIB3270_EXPORT int lib3270_print_all(H3270 *hSession);
795 795 LIB3270_EXPORT int lib3270_print_selected(H3270 *hSession);
796 796 LIB3270_EXPORT int lib3270_print_copy(H3270 *hSession);
797 797  
798 798 /**
  799 + * @brief Save contents to file.
  800 + *
  801 + * @param hSession Session Handle.
  802 + * @param mode Content option.
  803 + * @param filename File name.
  804 + *
  805 + * @return 0 if ok, error code if not.
  806 + */
  807 + LIB3270_EXPORT int lib3270_save(H3270 *hSession, LIB3270_CONTENT_OPTION mode, const char *filename);
  808 +
  809 + LIB3270_EXPORT int lib3270_save_all(H3270 *hSession, const char *filename);
  810 + LIB3270_EXPORT int lib3270_save_selected(H3270 *hSession, const char *filename);
  811 + LIB3270_EXPORT int lib3270_save_copy(H3270 *hSession, const char *filename);
  812 +
  813 + /**
799 814 * @brief Get buffer contents.
800 815 *
801 816 * @param h Session handle.
... ...
src/include/lib3270/session.h
... ... @@ -74,7 +74,8 @@
74 74 void (*set_selection)(H3270 *session, unsigned char on);
75 75 void (*ctlr_done)(H3270 *session);
76 76 void (*autostart)(H3270 *session);
77   - int (*print)(H3270 *session, LIB3270_PRINT_MODE mode);
  77 + int (*print)(H3270 *session, LIB3270_CONTENT_OPTION mode);
  78 + int (*save)(H3270 *session, LIB3270_CONTENT_OPTION mode, const char *filename);
78 79  
79 80 void (*message)(H3270 *session, LIB3270_NOTIFY id , const char *title, const char *message, const char *text);
80 81 void (*popup)(H3270 *session, LIB3270_NOTIFY id, const char *title, const char *msg, const char *fmt, va_list);
... ...