X-Git-Url: http://andersk.mit.edu/gitweb/moira.git/blobdiff_plain/83e80378a6b559622e6c0be8013df8dd72cd7aad..8defc06b8af7d99c7b46eaa73d5e9d7c8f044d52:/lib/mr_query.c diff --git a/lib/mr_query.c b/lib/mr_query.c index ab57d674..d6162b2c 100644 --- a/lib/mr_query.c +++ b/lib/mr_query.c @@ -4,13 +4,8 @@ * $Header$ * * Copyright (C) 1987 by the Massachusetts Institute of Technology - * - * $Log$ - * Revision 1.2 1987-06-16 17:48:58 wesommer - * Clean up memory allocation, indenting. - * - * Revision 1.1 87/06/04 01:29:32 wesommer - * Initial revision + * For copying and distribution information, please see the file + * . * */ @@ -18,16 +13,18 @@ static char *rcsid_sms_query_c = "$Header$"; #endif lint -#include "sms_private.h" +#include +#include "mr_private.h" /* - * This routine is the primary external interface to the sms library. + * This routine is the primary external interface to the mr library. * * It builds a new argument vector with the query handle prepended, - * and calls sms_query_internal. + * and calls mr_query_internal. */ +int level = 0; -int sms_query(name, argc, argv, callproc, callarg) +int mr_query(name, argc, argv, callproc, callarg) char *name; /* Query name */ int argc; /* Arg count */ char **argv; /* Args */ @@ -38,12 +35,12 @@ int sms_query(name, argc, argv, callproc, callarg) register int status = 0; nargv[0] = name; bcopy((char *)argv, (char *)(nargv+1), sizeof(char *) * argc); - status = sms_query_internal(argc+1, nargv, callproc, callarg); + status = mr_query_internal(argc+1, nargv, callproc, callarg); free(nargv); return status; } /* - * This routine makes an SMS query. + * This routine makes an MR query. * * argv[0] is the query name. * argv[1..argc-1] are the query arguments. @@ -55,58 +52,54 @@ int sms_query(name, argc, argv, callproc, callarg) * way to send it a quench..) */ -int sms_query_internal(argc, argv, callproc, callarg) +int mr_query_internal(argc, argv, callproc, callarg) int argc; /* Arg count */ char **argv; /* Args */ int (*callproc)(); /* Callback procedure */ char *callarg; /* Callback argument */ { int status; - sms_params params_st; - register sms_params *params = NULL; - sms_params *reply = NULL; + mr_params params_st; + register mr_params *params = NULL; + mr_params *reply = NULL; int stopcallbacks = 0; + + if (level) return MR_QUERY_NOT_REENTRANT; CHECK_CONNECTED; + level++; - params = ¶ms_st; - params->sms_procno = SMS_QUERY; - params->sms_argc = argc; - params->sms_argl = NULL; - params->sms_argv = argv; + params = ¶ms_st; + params->mr_version_no = sending_version_no; + params->mr_procno = MR_QUERY; + params->mr_argc = argc; + params->mr_argl = NULL; + params->mr_argv = argv; - if ((status = sms_do_call(params, &reply))) + if ((status = mr_do_call(params, &reply))) goto punt; - while ((status = reply->sms_status) == SMS_MORE_DATA) { + while ((status = reply->mr_status) == MR_MORE_DATA) { if (!stopcallbacks) stopcallbacks = - (*callproc)(reply->sms_argc, reply->sms_argv, callarg); - sms_destroy_reply(reply); + (*callproc)(reply->mr_argc, reply->mr_argv, callarg); + mr_destroy_reply(reply); reply = NULL; - initialize_operation(_sms_recv_op, sms_start_recv, &reply, + initialize_operation(_mr_recv_op, mr_start_recv, &reply, (int (*)())NULL); - queue_operation(_sms_conn, CON_INPUT, _sms_recv_op); + queue_operation(_mr_conn, CON_INPUT, _mr_recv_op); - complete_operation(_sms_recv_op); - if (OP_STATUS(_sms_recv_op) != OP_COMPLETE) { - sms_disconnect(); - return SMS_ABORTED; + mr_complete_operation(_mr_recv_op); + if (OP_STATUS(_mr_recv_op) != OP_COMPLETE) { + mr_disconnect(); + status = MR_ABORTED; + goto punt_1; } } punt: - sms_destroy_reply(reply); - + mr_destroy_reply(reply); +punt_1: + level--; return status; } -/* - * Local Variables: - * mode: c - * c-indent-level: 4 - * c-continued-statement-offset: 4 - * c-brace-offset: -4 - * c-argdecl-indent: 4 - * c-label-offset: -4 - * End: - */