[haiku-commits] r39152 - haiku/trunk/src/tests/add-ons/print/transports

  • From: philippe.houdoin@xxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Tue, 26 Oct 2010 11:26:41 +0200 (CEST)

Author: phoudoin
Date: 2010-10-26 11:26:41 +0200 (Tue, 26 Oct 2010)
New Revision: 39152
Changeset: http://dev.haiku-os.org/changeset/39152

Modified:
   haiku/trunk/src/tests/add-ons/print/transports/main.cpp
Log:
Small change lost in the void: search in common addons dir too.


Modified: haiku/trunk/src/tests/add-ons/print/transports/main.cpp
===================================================================
--- haiku/trunk/src/tests/add-ons/print/transports/main.cpp     2010-10-26 
09:03:26 UTC (rev 39151)
+++ haiku/trunk/src/tests/add-ons/print/transports/main.cpp     2010-10-26 
09:26:41 UTC (rev 39152)
@@ -11,9 +11,9 @@
 
 int main (int argc, char *argv[])
 {
-       image_id addon;
+       image_id addon = -1;
        char *transport;
-       
+
        if (argc < 2) {
                printf("Usage: %s <transport add-on name> [<file to print>]\n", 
argv[0]);
                return B_ERROR;
@@ -23,40 +23,40 @@
 
        transport = argv[1];
 
-       printf("Looking for %s transport addon:", transport);
+       printf("Looking for %s transport addon:\n", transport);
 
-       // try first in user add-ons directory
-       printf("In user add-ons directory...\n");
-
+       directory_which which[] = {
+               B_USER_ADDONS_DIRECTORY,
+               B_COMMON_ADDONS_DIRECTORY,
+               B_SYSTEM_ADDONS_DIRECTORY
+       };
        BPath path;
-       find_directory(B_USER_ADDONS_DIRECTORY, &path);
-       path.Append("Print/transport");
-       path.Append(transport);
-       
-       addon = load_add_on(path.Path());
-       if (addon < 0) {
-               // on failure try in system add-ons directory
+       for (uint32 i = 0; i <sizeof(which) / sizeof(which[0]); i++) {
+               if (find_directory(which[i], &path, false) != B_OK)
+                       continue;
 
-               printf("In system add-ons directory...\n");
-               find_directory(B_BEOS_ADDONS_DIRECTORY, &path);
                path.Append("Print/transport");
                path.Append(transport);
 
+               printf("\t%s ?\n", path.Path());
                addon = load_add_on(path.Path());
+               if (addon >= B_OK)
+                       break;
        }
 
-       if (addon < 0) {
+       if (addon == B_ERROR) {
                // failed to load transport add-on
-               printf("Failed to load %s print transport add-on!\n", 
transport);
-               return B_ERROR;
+               printf("Failed to load \"%s\" print transport add-on!\n", 
transport);
+               return -1;
        }
-       
-       printf("Loaded from %s\n", path.Path());
 
+       printf("Add-on %d = \"%s\" loaded from %s.\n", (int) addon,
+               transport, path.Path());
+
        // get init & exit proc
        BDataIO* (*init_proc)(BMessage*);
        void (*exit_proc)(void);
-       
+
        get_image_symbol(addon, "init_transport", B_SYMBOL_TYPE_TEXT, (void **) 
&init_proc);
        get_image_symbol(addon, "exit_transport", B_SYMBOL_TYPE_TEXT, (void **) 
&exit_proc);
 
@@ -75,7 +75,7 @@
        // 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);
-       
+
        if (io) {
                printf("done.\nTransport parameters msg =>\n");
                msg.PrintToStream();
@@ -89,7 +89,7 @@
                        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) {
@@ -101,14 +101,14 @@
                        printf("%ld data bytes sent.\n", total);
                }       // data valid file
        }       // optional data file
-       
+
        if (exit_proc) {
                printf("Exiting %s...\n", transport);
                (*exit_proc)();
        }
-       
+
        unload_add_on(addon);
        printf("%s unloaded.\n", transport);
 
        return B_OK;
-}
\ No newline at end of file
+}


Other related posts:

  • » [haiku-commits] r39152 - haiku/trunk/src/tests/add-ons/print/transports - philippe . houdoin