+ return ret;
+}
+
+static int cmd_suggestions(struct zoom_sh *sh, const char **args)
+{
+ struct zoom_db *db;
+ int ret = 0;
+
+ process_events(sh);
+
+ for (db = sh->list; db; db = db->next)
+ {
+ int error;
+ const char *errmsg, *addinfo, *dset;
+ /* display errors if any */
+ if (!db->con)
+ continue;
+ if ((error = ZOOM_connection_error_x(db->con, &errmsg, &addinfo,
+ &dset)))
+ {
+ printf("%s error: %s (%s:%d) %s\n",
+ ZOOM_connection_option_get(db->con, "host"), errmsg,
+ dset, error, addinfo);
+ ret = 1;
+ }
+ else if (db->res)
+ {
+ const char *suggestions =
+ ZOOM_resultset_option_get(db->res, "suggestions");
+ if (suggestions)
+ printf("Suggestions: \n%s\n", suggestions);
+ }
+ }
+ return ret;
+}
+
+static int cmd_ext(struct zoom_sh *sh, const char **args)
+{
+ int ret = 0;
+ ZOOM_package *p = 0;
+ struct zoom_db *db;
+ int i, number;
+ WRBUF ext_type_str = next_token_new_wrbuf(args);
+
+ if (!ext_type_str)
+ {
+ printf("es: missing type "
+ "(itemorder, create, drop, commit, update, xmlupdate)\n");
+ return 1;
+ }
+ for (number = 0, db = sh->list; db; db = db->next)
+ if (db->con)
+ number++;