/*
- * Copyright (c) 1995-1998, Index Data.
+ * Copyright (c) 1995-1999, Index Data.
* See the file LICENSE for details.
* Sebastian Hammer, Adam Dickmeiss
*
* $Log: client.c,v $
- * Revision 1.73 1998-10-20 13:55:43 quinn
+ * Revision 1.76 1999-03-11 11:12:07 adam
+ * Added GNU readline support. HTML display in client.
+ *
+ * Revision 1.75 1999/02/01 15:37:32 adam
+ * Fixed minor bug introduced by previous commit.
+ *
+ * Revision 1.74 1999/02/01 15:35:21 adam
+ * Added XML display.
+ *
+ * Revision 1.73 1998/10/20 13:55:43 quinn
* Fixed Scan bug in asn and client
*
* Revision 1.72 1998/10/20 13:23:15 quinn
#include <yaz-ccl.h>
#endif
+#if HAVE_READLINE_READLINE_H
+#include <readline/readline.h>
+#endif
+#if HAVE_READLINE_HISTORY_H
+#include <readline/history.h>
+#endif
+
#define C_PROMPT "Z> "
static ODR out, in, print; /* encoding and decoding streams */
printf("%.*s", r->u.octet_aligned->len, r->u.octet_aligned->buf);
else if (r->which == Z_External_octet && p->u.octet_aligned->len)
{
- const char *marc_buf = (char*)p->u.octet_aligned->buf;
- marc_display (marc_buf, NULL);
+ const char *octet_buf = (char*)p->u.octet_aligned->buf;
+ if (ent->value == VAL_TEXT_XML || ent->value == VAL_APPLICATION_XML ||
+ ent->value == VAL_HTML)
+ {
+ int i;
+ for (i = 0; i<p->u.octet_aligned->len; i++)
+ if (octet_buf[i] > 126 || octet_buf[i] < 7)
+ printf ("<%02X>", octet_buf[i]);
+ else
+ fputc (octet_buf[i], stdout);
+ printf ("\n");
+ }
+ else
+ marc_display (octet_buf, NULL);
if (marcdump)
- fwrite (marc_buf, strlen (marc_buf), 1, marcdump);
+ fwrite (octet_buf, 1, p->u.octet_aligned->len, marcdump);
}
else if (ent && ent->value == VAL_SUTRS)
{
#else
if (!wait)
#endif
- {
- /* quick & dirty way to get a command line. */
- char *end_p;
- if (!fgets(line, 1023, stdin))
- break;
- if ((end_p = strchr (line, '\n')))
- *end_p = '\0';
+ {
+#if HAVE_READLINE_READLINE_H
+ char* line_in;
+ line_in=readline(C_PROMPT);
+#if HAVE_READLINE_HISTORY_H
+ if (*line_in)
+ add_history(line_in);
+#endif
+ strcpy(line,line_in);
+ free (line_in);
+#else
+ char *end_p;
+ printf (C_PROMPT);
+ fflush(stdout);
+ if (!fgets(line, 1023, stdin))
+ break;
+ if ((end_p = strchr (line, '\n')))
+ *end_p = '\0';
+#endif
if ((res = sscanf(line, "%s %[^;]", word, arg)) <= 0)
{
strcpy(word, last_cmd);
}
if (res < 2)
{
- printf(C_PROMPT);
continue;
}
}
}
}
while (conn && cs_more(conn));
- printf(C_PROMPT);
- fflush(stdout);
}
}
return 0;
}
}
if (!opened)
- {
initialize ();
- printf (C_PROMPT);
- }
return client (opened);
}