Commit 67a51e3a364a5c26008d1366c70e5a9a2bee7789
1 parent
25546cf9
Exists in
master
and in
3 other branches
Exporting "save" options.
Showing
4 changed files
with
60 additions
and
14 deletions
Show diff stats
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); | ... | ... |