Index: trunk/Ohana/src/opihi/cmd.data/book_commands.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/book_commands.c	(revision 16119)
+++ trunk/Ohana/src/opihi/cmd.data/book_commands.c	(revision 16139)
@@ -170,4 +170,10 @@
   book = GetBook (where);
   if (book == NULL) {
+    if (varName) {
+      set_str_variable (varName, "NULL");
+      FREE (varName);
+      return TRUE;
+    } 
+
     gprint (GP_ERR, "book %s not found\n", argv[1]);
     FREE (varName);
@@ -178,5 +184,5 @@
     set_str_variable (varName, book[0].name);
   } else {
-    gprint (GP_ERR, "%s\n", book[0].name);
+    gprint (GP_LOG, "%s\n", book[0].name);
   }
   FREE (varName);
@@ -294,5 +300,5 @@
 
   int where, N;
-  char *pageName, *varName, *keyName, *keyValue;
+  char *varName, *keyName, *keyValue;
   Book *book;
   Page *page;
@@ -326,4 +332,11 @@
   book = FindBook (argv[1]);
   if (book == NULL) {
+    if (varName) {
+      set_str_variable (varName, "NULL");
+      FREE (varName);
+      FREE (keyName);
+      FREE (keyValue);
+      return TRUE;
+    } 
     gprint (GP_ERR, "book %s not found\n", argv[1]);
     FREE (varName);
@@ -338,16 +351,25 @@
     page = GetPageRestricted (book, where, keyName, keyValue);
   }
+
   if (page == NULL) {
-    pageName = strcreate ("NULL");
+    if (varName) {
+      set_str_variable (varName, "NULL");
+      FREE (varName);
+      FREE (keyName);
+      FREE (keyValue);
+      return TRUE;
+    } 
+    gprint (GP_ERR, "page %d not found in %s\n", where, argv[1]);
+    FREE (varName);
+    FREE (keyName);
+    FREE (keyValue);
+    return FALSE;
+  }
+
+  if (varName) {
+    set_str_variable (varName, page[0].name);
   } else {
-    pageName = strcreate (page[0].name);
-  }
-
-  if (varName) {
-    set_str_variable (varName, pageName);
-  } else {
-    gprint (GP_ERR, "%s\n", pageName);
-  }
-  FREE (pageName);
+    gprint (GP_LOG, "%s\n", page[0].name);
+  }
   FREE (varName);
   FREE (keyName);
@@ -404,4 +426,9 @@
   book = FindBook (argv[1]);
   if (book == NULL) {
+    if (varName) {
+      set_str_variable (varName, "NULL");
+      FREE (varName);
+      return TRUE;
+    } 
     gprint (GP_ERR, "book %s not found\n", argv[1]);
     FREE (varName);
@@ -411,4 +438,9 @@
   page = FindPage (book, argv[2]);
   if (page == NULL) {
+    if (varName) {
+      set_str_variable (varName, "NULL");
+      FREE (varName);
+      return TRUE;
+    } 
     gprint (GP_ERR, "page %s in book %s not found\n", argv[2], argv[1]);
     FREE (varName);
@@ -418,13 +450,12 @@
   value = BookGetWord (page, argv[3]);
   if (value == NULL) {
-    if (varName == NULL) {
-      gprint (GP_ERR, "value %s on page %s in book %s not found\n", argv[3], argv[2], argv[1]);
-      FREE (varName);
-      return FALSE;
-    } else {
+    if (varName) {
       set_str_variable (varName, "NULL");
       FREE (varName);
       return TRUE;
     }
+    gprint (GP_ERR, "value %s on page %s in book %s not found\n", argv[3], argv[2], argv[1]);
+    FREE (varName);
+    return FALSE;
   }
 
@@ -432,5 +463,5 @@
     set_str_variable (varName, value);
   } else {
-    gprint (GP_ERR, "%s\n", value);
+    gprint (GP_LOG, "%s\n", value);
   }
     
