X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=client%2Fclient.c;h=824fe241cffd4d1b3c0ad014d24235571f6790b8;hp=ac7380c8dee636111bae4892f4b5a6f69fac2495;hb=b9db9bc681a9c78da31d0cb89c50f103197cfb65;hpb=e97610b3e0040428e2cb74f846ade31a0194074e diff --git a/client/client.c b/client/client.c index ac7380c..824fe24 100644 --- a/client/client.c +++ b/client/client.c @@ -1,5 +1,5 @@ /* This file is part of the YAZ toolkit. - * Copyright (C) 1995-2008 Index Data + * Copyright (C) 1995-2009 Index Data * See the file LICENSE for details. */ /** \file client.c @@ -92,7 +92,10 @@ static Z_SRW_PDU *srw_sr = 0; static FILE *apdu_file = 0; static FILE *ber_file = 0; static COMSTACK conn = 0; /* our z-association */ + static Z_IdAuthentication *auth = 0; /* our current auth definition */ +static NMEM nmem_auth = NULL; + char *databaseNames[128]; int num_databaseNames = 0; static Z_External *record_last = 0; @@ -101,7 +104,7 @@ static int smallSetUpperBound = 0; static int largeSetLowerBound = 1; static int mediumSetPresentNumber = 0; static Z_ElementSetNames *elementSetNames = 0; -static int setno = 1; /* current set offset */ +static Odr_int setno = 1; /* current set offset */ static enum oid_proto protocol = PROTO_Z3950; /* current app protocol */ #define RECORDSYNTAX_MAX 20 static char *recordsyntax_list[RECORDSYNTAX_MAX]; @@ -130,7 +133,6 @@ static char* yazLang = 0; static char last_cmd[32] = "?"; static FILE *marc_file = 0; static char *refid = NULL; -static char *last_open_command = NULL; static int auto_reconnect = 0; static int auto_wait = 1; static Odr_bitmask z3950_options; @@ -179,6 +181,8 @@ static void close_session(void); static void marc_file_write(const char *buf, size_t sz); +static void wait_and_handle_response(int one_response_only); + ODR getODROutputStream(void) { return out; @@ -197,14 +201,15 @@ const char* query_type_as_string(QueryType q) } } -static void do_hex_dump(const char* buf, int len) +static void do_hex_dump(const char* buf, size_t len) { if (hex_dump) { - int i,x; + size_t i; + int x; for (i = 0; i < len ; i = i+16 ) { - printf(" %4.4d ",i); + printf(" %4.4ld ", (long) i); for(x=0 ; i+xlen, sat->buf); + printf("yaz-client ignoring unrecognised userInformationField: %d-octet External '%.*s'\n", + (int) sat->len, sat->len, sat->buf); } } odr_reset(print); @@ -521,7 +526,7 @@ static void render_diag(Z_DiagnosticFormat *diag) { case Z_DiagnosticFormat_s_defaultDiagRec: { Z_DefaultDiagFormat *dd = ds->u.defaultDiagRec; /* ### should check `dd->diagnosticSetId' */ - printf("code=%d (%s)", *dd->condition, + printf("code=" ODR_INT_PRINTF " (%s)", *dd->condition, diagbib1_str(*dd->condition)); /* Both types of addinfo are the same, so use type-pun */ if (dd->u.v2Addinfo != 0) @@ -590,7 +595,7 @@ static int parse_cmd_doc(const char **arg, ODR out, char **buf, int *len) } else if ((*arg)[0] == '<') { - long fsize; + size_t fsize; FILE *inf; const char *fname; const char *arg_start = ++(*arg); @@ -660,15 +665,6 @@ static int cmd_base(const char *arg) return set_base(arg); } -void cmd_open_remember_last_open_command(const char* arg, char* new_open_command) -{ - if(last_open_command != arg) - { - if(last_open_command) xfree(last_open_command); - last_open_command = xstrdup(new_open_command); - } -} - int session_connect(const char *arg) { void *add; @@ -690,8 +686,6 @@ int session_connect(const char *arg) strncpy(type_and_host, arg, sizeof(type_and_host)-1); type_and_host[sizeof(type_and_host)-1] = '\0'; - cmd_open_remember_last_open_command(arg, type_and_host); - if (yazProxy) conn = cs_create_host(yazProxy, 1, &add); else @@ -712,10 +706,6 @@ int session_connect(const char *arg) } #endif protocol = conn->protocol; - if (conn->protocol == PROTO_HTTP) - set_base(""); - else - set_base("Default"); printf("Connecting..."); fflush(stdout); if (cs_connect(conn, add) < 0) @@ -728,7 +718,10 @@ int session_connect(const char *arg) printf("OK.\n"); cs_print_session_info(conn); if (basep && *basep) - set_base (basep); + set_base(basep); + else if (protocol == PROTO_Z3950) + set_base("Default"); + if (protocol == PROTO_Z3950) { send_initRequest(type_and_host); @@ -745,80 +738,75 @@ int cmd_open(const char *arg) strncpy(cur_host, arg, sizeof(cur_host)-1); cur_host[sizeof(cur_host)-1] = 0; } + + set_base(""); r = session_connect(cur_host); if (conn && conn->protocol == PROTO_HTTP) queryType = QueryType_CQL; - return r; -} - -void try_reconnect(void) -{ - char* open_command; - - if(!( auto_reconnect && last_open_command) ) return ; - open_command = (char *) xmalloc(strlen(last_open_command)+6); - strcpy(open_command, "open "); - strcat(open_command, last_open_command); - - process_cmd_line(open_command); - - xfree(open_command); + return r; } int cmd_authentication(const char *arg) { - static Z_IdAuthentication au; - static char user[40], group[40], pass[40]; - static Z_IdPass idPass; + char **args; int r; - if (!*arg) - { - printf("Auth field set to null\n"); - auth = 0; - return 1; - } - r = sscanf(arg, "%39s %39s %39s", user, group, pass); + nmem_reset(nmem_auth); + nmem_strsplit_blank(nmem_auth, arg, &args, &r); + if (r == 0) { printf("Authentication set to null\n"); auth = 0; } - if (r == 1) + else if (r == 1) { - auth = &au; - if (!strcmp(user, "-")) { - au.which = Z_IdAuthentication_anonymous; + auth = (Z_IdAuthentication *) nmem_malloc(nmem_auth, sizeof(*auth)); + if (!strcmp(args[0], "-")) + { + auth->which = Z_IdAuthentication_anonymous; + auth->u.anonymous = odr_nullval(); printf("Authentication set to Anonymous\n"); - } else { - au.which = Z_IdAuthentication_open; - au.u.open = user; - printf("Authentication set to Open (%s)\n", user); + } + else + { + auth->which = Z_IdAuthentication_open; + auth->u.open = args[0]; + printf("Authentication set to Open (%s)\n", args[0]); } } - if (r == 2) - { - auth = &au; - au.which = Z_IdAuthentication_idPass; - au.u.idPass = &idPass; - idPass.groupId = NULL; - idPass.userId = !strcmp(user, "-") ? 0 : user; - idPass.password = !strcmp(group, "-") ? 0 : group; - printf("Authentication set to User (%s), Pass (%s)\n", user, group); + else if (r == 2) + { + auth = (Z_IdAuthentication *) nmem_malloc(nmem_auth, sizeof(*auth)); + auth->which = Z_IdAuthentication_idPass; + auth->u.idPass = (Z_IdPass *) + nmem_malloc(nmem_auth, sizeof(*auth->u.idPass)); + auth->u.idPass->groupId = NULL; + auth->u.idPass->userId = !strcmp(args[0], "-") ? 0 : args[0]; + auth->u.idPass->password = !strcmp(args[1], "-") ? 0 : args[1]; + printf("Authentication set to User (%s), Pass (%s)\n", + args[0], args[1]); + } + else if (r == 3) + { + auth = (Z_IdAuthentication*) nmem_malloc(nmem_auth, sizeof(*auth)); + auth->which = Z_IdAuthentication_idPass; + auth->u.idPass = (Z_IdPass *) + nmem_malloc(nmem_auth, sizeof(*auth->u.idPass)); + auth->u.idPass->groupId = args[1]; + auth->u.idPass->userId = args[0]; + auth->u.idPass->password = args[2]; + printf("Authentication set to User (%s), Group (%s), Pass (%s)\n", + args[0], args[1], args[2]); } - if (r == 3) + else { - auth = &au; - au.which = Z_IdAuthentication_idPass; - au.u.idPass = &idPass; - idPass.groupId = group; - idPass.userId = user; - idPass.password = pass; - printf("Authentication set to User (%s), Group (%s), Pass (%s)\n", - user, group, pass); + printf("Bad number of args to auth\n"); + auth = 0; } + return 1; } @@ -889,7 +877,8 @@ static void display_record(Z_External *r) { print_record((const unsigned char *) r->u.octet_aligned->buf, r->u.octet_aligned->len); - marc_file_write(r->u.octet_aligned->buf, r->u.octet_aligned->len); + marc_file_write((const char *) r->u.octet_aligned->buf, + r->u.octet_aligned->len); } else if (oid && r->which == Z_External_octet) { @@ -980,7 +969,7 @@ static void display_record(Z_External *r) return; } print_record(r->u.sutrs->buf, r->u.sutrs->len); - marc_file_write(r->u.sutrs->buf, r->u.sutrs->len); + marc_file_write((const char *) r->u.sutrs->buf, r->u.sutrs->len); } else if (oid && !oid_oidcmp(oid, yaz_oid_recsyn_grs_1)) { @@ -1137,7 +1126,8 @@ static void display_diagrecs(Z_DiagRec **pp, int num) if (oid_oidcmp(r->diagnosticSetId, yaz_oid_diagset_bib_1)) printf("Unknown diagset: %s\n", diag_name); } - printf(" [%d] %s", *r->condition, diagbib1_str(*r->condition)); + printf(" [" ODR_INT_PRINTF "] %s", + *r->condition, diagbib1_str(*r->condition)); switch (r->which) { case Z_DefaultDiagFormat_v2Addinfo: @@ -1198,8 +1188,7 @@ static int send_deleteResultSetRequest(const char *arg) names[0], names[1], names[2], names[3], names[4], names[5], names[6], names[7]); - req->deleteFunction = (int *) - odr_malloc(out, sizeof(*req->deleteFunction)); + req->deleteFunction = odr_intdup(out, 0); if (req->num_resultSetList > 0) { *req->deleteFunction = Z_DeleteResultSetRequest_list; @@ -1232,6 +1221,7 @@ static int send_srw(Z_SRW_PDU *sr) *path = '/'; strcpy(path+1, databaseNames[0]); + printf("path=%s\n", path); gdu = z_get_HTTP_Request_host_path(out, host_port, path); if (!yaz_matchstr(sru_method, "get")) @@ -1558,7 +1548,7 @@ static void display_queryExpression(const char *lead, Z_QueryExpression *qe) printf("%s", term->u.characterString); break; case Z_Term_numeric: - printf("%d", *term->u.numeric); + printf(ODR_INT_PRINTF, *term->u.numeric); break; case Z_Term_null: printf("null"); @@ -1598,7 +1588,8 @@ static void display_searchResult(Z_OtherInformation *o) display_queryExpression("recommendation", sr->elements[j]->subqueryRecommendation); if (sr->elements[j]->subqueryCount) - printf(" cnt=%d", *sr->elements[j]->subqueryCount); + printf(" cnt=" ODR_INT_PRINTF, + *sr->elements[j]->subqueryCount); if (sr->elements[j]->subqueryId) printf(" id=%s ", sr->elements[j]->subqueryId); } @@ -1616,7 +1607,7 @@ static int process_searchResponse(Z_SearchResponse *res) printf("Search was a success.\n"); else printf("Search was a bloomin' failure.\n"); - printf("Number of hits: %d", *res->resultCount); + printf("Number of hits: " ODR_INT_PRINTF, *res->resultCount); last_hit_count = *res->resultCount; if (setnumber >= 0) printf(", setno %d", setnumber); @@ -1635,12 +1626,12 @@ static int process_searchResponse(Z_SearchResponse *res) case Z_SearchResponse_estimate: printf("estimate"); break; default: - printf("%d", *res->resultSetStatus); + printf(ODR_INT_PRINTF, *res->resultSetStatus); } putchar('\n'); } display_searchResult(res->additionalSearchInfo); - printf("records returned: %d\n", + printf("records returned: " ODR_INT_PRINTF "\n", *res->numberOfRecordsReturned); setno += *res->numberOfRecordsReturned; if (res->records) @@ -1655,7 +1646,16 @@ static void print_level(int iLevel) printf(" "); } -static void print_int(int iLevel, const char *pTag, int *pInt) +static void print_int(int iLevel, const char *pTag, Odr_int *pInt) +{ + if (pInt != NULL) + { + print_level(iLevel); + printf("%s: " ODR_INT_PRINTF "\n", pTag, *pInt); + } +} + +static void print_bool(int iLevel, const char *pTag, Odr_bool *pInt) { if (pInt != NULL) { @@ -1808,10 +1808,10 @@ static int process_resourceControlRequest(Z_ResourceControlRequest *req) { printf("Received ResourceControlRequest.\n"); print_referenceId(1, req->referenceId); - print_int(1, "Suspended Flag", req->suspendedFlag); + print_bool(1, "Suspended Flag", req->suspendedFlag); print_int(1, "Partial Results Available", req->partialResultsAvailable); - print_int(1, "Response Required", req->responseRequired); - print_int(1, "Triggered Request Flag", req->triggeredRequestFlag); + print_bool(1, "Response Required", req->responseRequired); + print_bool(1, "Triggered Request Flag", req->triggeredRequestFlag); print_external(1, req->resourceReport); return 0; } @@ -2060,9 +2060,7 @@ static Z_External *create_ItemOrderExternal(const char *type, int itemno, r->u.itemOrder->u.esRequest->notToKeep->resultSetItem->resultSetId = "1"; r->u.itemOrder->u.esRequest->notToKeep->resultSetItem->item = - (int *) odr_malloc(out, sizeof(int)); - *r->u.itemOrder->u.esRequest->notToKeep->resultSetItem->item = itemno; - + odr_intdup(out, itemno); if (!strcmp (type, "item") || !strcmp(type, "2")) { printf("using item-request\n"); @@ -2299,8 +2297,7 @@ static int cmd_update_Z3950(int version, int action_no, const char *recid, } toKeep->elementSetName = 0; - toKeep->action = (int *) odr_malloc(out, sizeof(*toKeep->action)); - *toKeep->action = action_no; + toKeep->action = odr_intdup(out, action_no); notToKeep = r->u.update0->u.esRequest->notToKeep = (Z_IU0SuppliedRecords *) odr_malloc(out, sizeof(*r->u.update0->u.esRequest->notToKeep)); @@ -2347,8 +2344,7 @@ static int cmd_update_Z3950(int version, int action_no, const char *recid, } toKeep->elementSetName = 0; toKeep->actionQualifier = 0; - toKeep->action = (int *) odr_malloc(out, sizeof(*toKeep->action)); - *toKeep->action = action_no; + toKeep->action = odr_intdup(out, action_no); notToKeep = r->u.update->u.esRequest->notToKeep = (Z_IUSuppliedRecords *) odr_malloc(out, sizeof(*r->u.update->u.esRequest->notToKeep)); @@ -2573,17 +2569,39 @@ static int cmd_find(const char *arg) } else { - if (!conn) + if (*cur_host && auto_reconnect) { - try_reconnect(); - - if (!conn) { - printf("Not connected yet\n"); - return 0; + int i = 0; + for (;;) + { + if (conn) + { + if (!send_searchRequest(arg)) + return 0; + wait_and_handle_response(0); + if (conn) + break; + } + if (++i == 2) + { + printf("Unable to reconnect\n"); + break; + } + session_connect(cur_host); + wait_and_handle_response(0); } + return 0; } - if (!send_searchRequest(arg)) + else if (conn) + { + if (!send_searchRequest(arg)) + return 0; + } + else + { + printf("Not connected yet\n"); return 0; + } } return 2; } @@ -2647,7 +2665,7 @@ static int cmd_setnames(const char *arg) /* PRESENT SERVICE ----------------------------- */ static void parse_show_args(const char *arg_c, char *setstring, - int *start, int *number) + Odr_int *start, Odr_int *number) { char arg[40]; char *p; @@ -2683,7 +2701,7 @@ static int send_presentRequest(const char *arg) Z_APDU *apdu = zget_APDU(out, Z_APDU_presentRequest); Z_PresentRequest *req = apdu->u.presentRequest; Z_RecordComposition compo; - int nos = 1; + Odr_int nos = 1; char setstring[100]; req->referenceId = set_refid(out); @@ -2765,7 +2783,8 @@ static int send_presentRequest(const char *arg) compo.u.simple = elementSetNames; } send_apdu(apdu); - printf("Sent presentRequest (%d+%d).\n", setno, nos); + printf("Sent presentRequest (" ODR_INT_PRINTF "+" ODR_INT_PRINTF ").\n", + setno, nos); return 2; } @@ -2773,7 +2792,7 @@ static int send_presentRequest(const char *arg) static int send_SRW_presentRequest(const char *arg) { char setstring[100]; - int nos = 1; + Odr_int nos = 1; Z_SRW_PDU *sr = srw_sr; if (!sr) @@ -2865,6 +2884,7 @@ void exit_client(int code) { file_history_save(file_history); file_history_destroy(&file_history); + nmem_destroy(nmem_auth); exit(code); } @@ -2918,7 +2938,7 @@ int cmd_cancel_find(const char *arg) { } int send_scanrequest(const char *set, const char *query, - int pp, int num, const char *term) + Odr_int pp, Odr_int num, const char *term) { Z_APDU *apdu = zget_APDU(out, Z_APDU_scanRequest); Z_ScanRequest *req = apdu->u.scanRequest; @@ -3054,7 +3074,7 @@ void display_term(Z_TermInfo *t) t->term->u.general->buf); if (t->globalOccurrences) - printf(" (%d)\n", *t->globalOccurrences); + printf(" (" ODR_INT_PRINTF ")\n", *t->globalOccurrences); else printf("\n"); } @@ -3067,12 +3087,12 @@ void process_scanResponse(Z_ScanResponse *res) printf("Received ScanResponse\n"); print_refid(res->referenceId); - printf("%d entries", *res->numberOfEntriesReturned); + printf(ODR_INT_PRINTF " entries", *res->numberOfEntriesReturned); if (res->positionOfTerm) - printf(", position=%d", *res->positionOfTerm); + printf(", position=" ODR_INT_PRINTF, *res->positionOfTerm); printf("\n"); if (*res->scanStatus != Z_Scan_success) - printf("Scan returned code %d\n", *res->scanStatus); + printf("Scan returned code " ODR_INT_PRINTF "\n", *res->scanStatus); if (!res->entries) return; if ((entries = res->entries->entries)) @@ -3105,7 +3125,7 @@ void process_sortResponse(Z_SortResponse *res) case Z_SortResponse_failure: printf("failure"); break; default: - printf("unknown (%d)", *res->sortStatus); + printf("unknown (" ODR_INT_PRINTF ")", *res->sortStatus); } printf("\n"); print_refid (res->referenceId); @@ -3116,15 +3136,16 @@ void process_sortResponse(Z_SortResponse *res) void process_deleteResultSetResponse(Z_DeleteResultSetResponse *res) { - printf("Got deleteResultSetResponse status=%d\n", + printf("Got deleteResultSetResponse status=" ODR_INT_PRINTF "\n", *res->deleteOperationStatus); if (res->deleteListStatuses) { int i; for (i = 0; i < res->deleteListStatuses->num; i++) { - printf("%s status=%d\n", res->deleteListStatuses->elements[i]->id, - *res->deleteListStatuses->elements[i]->status); + printf("%s status=" ODR_INT_PRINTF "\n", + res->deleteListStatuses->elements[i]->id, + *res->deleteListStatuses->elements[i]->status); } } } @@ -3206,15 +3227,13 @@ static int cmd_scan_common(const char *set, const char *arg) } else { - if (!conn) + if (*cur_host && !conn && auto_reconnect) { - try_reconnect(); - - if (!conn) { - printf("Session not initialized yet\n"); - return 0; - } + session_connect(cur_host); + wait_and_handle_response(0); } + if (!conn) + return 0; if (session_initResponse && !ODR_MASK_GET(session_initResponse->options, Z_Options_scan)) { @@ -3545,16 +3564,12 @@ int cmd_source(const char* arg, int echo ) return -1; } - while (!feof(includeFile)) { - memset(line, 0, sizeof(line)); - if (!fgets(line, sizeof(line), includeFile)) - { - perror("fgets"); - break; - } - - if (strlen(line) < 2) continue; - if (line[0] == '#') continue; + while (fgets(line, sizeof(line), includeFile)) + { + if (strlen(line) < 2) + continue; + if (line[0] == '#') + continue; if ((cp = strrchr(line, '\n'))) *cp = '\0'; @@ -3888,9 +3903,10 @@ static void initialize(const char *rc_file) cmd_format("usmarc"); + file_history = file_history_new(); + source_rc_file(rc_file); - file_history = file_history_new(); file_history_load(file_history); file_history_trav(file_history, 0, add_to_readline_history); } @@ -3905,7 +3921,7 @@ static void handle_srw_record(Z_SRW_record *rec) { if (rec->recordPosition) { - printf("pos=%d", *rec->recordPosition); + printf("pos=" ODR_INT_PRINTF, *rec->recordPosition); setno = *rec->recordPosition + 1; } if (rec->recordSchema) @@ -3913,11 +3929,6 @@ static void handle_srw_record(Z_SRW_record *rec) printf("\n"); if (rec->recordData_buf && rec->recordData_len) { - if (fwrite(rec->recordData_buf, 1, rec->recordData_len, stdout) != - rec->recordData_len) - { - printf("write to stdout failed\n"); - } printf("%.*s", rec->recordData_len, rec->recordData_buf); marc_file_write(rec->recordData_buf, rec->recordData_len); } @@ -3950,7 +3961,7 @@ static void handle_srw_response(Z_SRW_searchRetrieveResponse *res) printf("Details: %s\n", res->diagnostics[i].details); } if (res->numberOfRecords) - printf("Number of hits: %d\n", *res->numberOfRecords); + printf("Number of hits: " ODR_INT_PRINTF "\n", *res->numberOfRecords); for (i = 0; inum_records; i++) handle_srw_record(res->records + i); } @@ -3964,7 +3975,7 @@ static void handle_srw_scan_term(Z_SRW_scanTerm *term) else printf("No value:"); if (term->numberOfRecords) - printf(" %d", *term->numberOfRecords); + printf(" " ODR_INT_PRINTF, *term->numberOfRecords); if (term->whereInList) printf(" %s", term->whereInList); if (term->value && term->displayTerm) @@ -4002,6 +4013,12 @@ static void http_response(Z_HTTP_Response *hres) int ret = -1; const char *connection_head = z_HTTP_header_lookup(hres->headers, "Connection"); + + if (hres->code != 200) + { + printf("HTTP Error Status=%d\n", hres->code); + } + if (!yaz_srw_check_content_type(hres)) printf("Content type does not appear to be XML\n"); else @@ -4029,12 +4046,14 @@ static void http_response(Z_HTTP_Response *hres) printf("Got update response. Status: %s\n", sr->u.update_response->operationStatus); else + { + printf("Decoding of SRW package failed\n"); ret = -1; + } } else if (soap_package && (soap_package->which == Z_SOAP_fault || soap_package->which == Z_SOAP_error)) { - printf("HTTP Error Status=%d\n", hres->code); printf("SOAP Fault code %s\n", soap_package->u.fault->fault_code); printf("SOAP Fault string %s\n", @@ -4051,17 +4070,7 @@ static void http_response(Z_HTTP_Response *hres) odr_destroy(o); } if (ret) - { - if (hres->code != 200) - { - printf("HTTP Error Status=%d\n", hres->code); - } - else - { - printf("Decoding of SRW package failed\n"); - } - close_session(); - } + close_session(); /* close session on error */ else { if (!strcmp(hres->version, "1.0")) @@ -4080,7 +4089,7 @@ static void http_response(Z_HTTP_Response *hres) } #endif -void wait_and_handle_response(int one_response_only) +static void wait_and_handle_response(int one_response_only) { int reconnect_ok = 1; int res; @@ -4180,7 +4189,7 @@ void wait_and_handle_response(int one_response_only) display_records(apdu->u.presentResponse->records); else printf("No records.\n"); - printf("nextResultSetPosition = %d\n", + printf("nextResultSetPosition = " ODR_INT_PRINTF "\n", *apdu->u.presentResponse->nextResultSetPosition); break; case Z_APDU_sortResponse: @@ -4376,16 +4385,13 @@ int cmd_list_all(const char* args) { int i; /* connection options */ - if(conn) { - printf("Connected to : %s\n",last_open_command); - } else { - if(last_open_command) - printf("Not connected to : %s\n",last_open_command); - else - printf("Not connected : \n"); - - } - if(yazProxy) printf("using proxy : %s\n",yazProxy); + if (conn) + printf("Connected to : %s\n", cur_host); + else if (*cur_host) + printf("Not connected to : %s\n", cur_host); + else + printf("Not connected : \n"); + if (yazProxy) printf("using proxy : %s\n",yazProxy); printf("auto_reconnect : %s\n",auto_reconnect?"on":"off"); printf("auto_wait : %s\n",auto_wait?"on":"off"); @@ -4924,6 +4930,8 @@ int main(int argc, char **argv) ODR_MASK_SET(&z3950_options, Z_Options_extendedServices); ODR_MASK_SET(&z3950_options, Z_Options_delSet); + nmem_auth = nmem_create(); + while ((ret = options("k:c:q:a:b:m:v:p:u:t:Vxd:f:", argv, argc, &arg)) != -2) { switch (ret) @@ -5052,6 +5060,7 @@ int main(int argc, char **argv) /* * Local variables: * c-basic-offset: 4 + * c-file-style: "Stroustrup" * indent-tabs-mode: nil * End: * vim: shiftwidth=4 tabstop=8 expandtab