From cf5a8b98ba356f3ea2da4194fe3e2f05b124114f Mon Sep 17 00:00:00 2001 From: Philippe Houdoin Date: Sat, 29 Jan 2005 14:08:01 +0000 Subject: [PATCH] Added feature: allow to send data from a file (think "Print To File" output) thru the loaded print transport add-on. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11121 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/tests/add-ons/print/transports/main.cpp | 24 ++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/tests/add-ons/print/transports/main.cpp b/src/tests/add-ons/print/transports/main.cpp index 400a83da5f..803866fa58 100644 --- a/src/tests/add-ons/print/transports/main.cpp +++ b/src/tests/add-ons/print/transports/main.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include @@ -14,7 +15,7 @@ int main (int argc, char *argv[]) char *transport; if (argc < 2) { - printf("Usage: %s \n", argv[0]); + printf("Usage: %s []\n", argv[0]); return B_ERROR; } @@ -71,6 +72,7 @@ int main (int argc, char *argv[]) // now, initialize the transport add-on // request BDataIO object from transport add-on BMessage msg('TRIN'); + // TODO: create on the fly a temporary printer folder for testing purpose only msg.AddString("printer_file", "/boot/home/config/settings/printers/test"); BDataIO *io = (*init_proc)(&msg); @@ -79,6 +81,26 @@ int main (int argc, char *argv[]) msg.PrintToStream(); } else printf("failed!\n"); + + + if (argc > 2) { + BFile data(argv[2], B_READ_ONLY); + if (data.InitCheck() == B_OK) { + uint8 buffer[B_PAGE_SIZE]; + ssize_t total = 0; + ssize_t sz; + + printf("Sending data read from %s file...\n", argv[2]); + while((sz = data.Read(buffer, sizeof(buffer))) > 0) { + if (io->Write(buffer, sz) < 0) { + printf("Error writting on the print transport stream!\n"); + break; + } + total += sz; + } // while + printf("%ld data bytes sent.\n", total); + } // data valid file + } // optional data file if (exit_proc) { printf("Exiting %s...\n", transport);