X-Git-Url: http://andersk.mit.edu/gitweb/moira.git/blobdiff_plain/44d12d589b43a1d65d8af81559b3f1588d88acff..refs/heads/origin:/lib/mr_access.c diff --git a/lib/mr_access.c b/lib/mr_access.c index c4a44ed7..ac70e3e7 100644 --- a/lib/mr_access.c +++ b/lib/mr_access.c @@ -1,61 +1,46 @@ -/* - * $Source$ - * $Author$ - * $Header$ +/* $Id$ + * + * Check access to a Moira query * - * Copyright (C) 1987, 1990 by the Massachusetts Institute of Technology - * For copying and distribution information, please see the file - * . + * Copyright (C) 1987-1998 by the Massachusetts Institute of Technology + * For copying and distribution information, please see the file + * . */ -#ifndef lint -static char *rcsid_sms_access_c = "$Header$"; -#endif - #include +#include #include "mr_private.h" -#include + +#include #include +#include + +RCSID("$Header$"); /* * Check access to a named query. */ int mr_access(char *name, int argc, char **argv) { - char **nargv = malloc(sizeof(char *) * (argc + 1)); - int status = 0; - - nargv[0] = name; - memcpy(nargv + 1, argv, sizeof(char *) * argc); - status = mr_access_internal(argc + 1, nargv); - free(nargv); - return status; -} - -/* - * Check access to a named query, where the query name is argv[0] - * and the arguments are the rest of argv[]. - */ -int mr_access_internal(int argc, char **argv) -{ + mr_params params, reply; int status; - mr_params params_st; - mr_params *params = NULL; - mr_params *reply = NULL; CHECK_CONNECTED; - params = ¶ms_st; - params->mr_version_no = sending_version_no; - params->mr_procno = MR_ACCESS; - params->mr_argc = argc; - params->mr_argl = NULL; - params->mr_argv = argv; + params.u.mr_procno = MR_ACCESS; + params.mr_argc = argc + 1; + params.mr_argv = malloc(sizeof(char *) * (argc + 1)); + if (!params.mr_argv) + return ENOMEM; + params.mr_argv[0] = name; + memcpy(params.mr_argv + 1, argv, sizeof(char *) * argc); + params.mr_argl = NULL; - if ((status = mr_do_call(params, &reply)) == 0) - status = reply->mr_status; + if ((status = mr_do_call(¶ms, &reply)) == MR_SUCCESS) + status = reply.u.mr_status; mr_destroy_reply(reply); + free(params.mr_argv); return status; }