From: wesommer Date: Mon, 1 Jun 1987 03:34:20 +0000 (+0000) Subject: Added shutdown; fixed noop. X-Git-Tag: BETA5-24-88~225 X-Git-Url: http://andersk.mit.edu/gitweb/moira.git/commitdiff_plain/6c00b7c426c7be829ce799bf2b02bbb1f127f7f5 Added shutdown; fixed noop. --- diff --git a/lib/mr_connect.c b/lib/mr_connect.c index 2b0f56b1..25ba36ea 100644 --- a/lib/mr_connect.c +++ b/lib/mr_connect.c @@ -21,18 +21,19 @@ static char *rcsid_sms_connect_c = "$Header$"; int sms_connect() { + extern int errno; + if (!sms_inited) sms_init(); /* * should do a hesiod call to find the sms machine name & service * number/name. */ - - _sms_conn = start_server_connection(SMS_GDB_SERV, "XXX"); /* XXX gdb doesn't give real return codes. Can we trust errno?*/ + errno = 0; + _sms_conn = start_server_connection(SMS_GDB_SERV, ""); if (_sms_conn == NULL) { - perror("gdb_connect"); /*XXX*/ - return SMS_CANT_CONNECT; + return errno; } return 0; } @@ -50,8 +51,8 @@ int sms_disconnect() int sms_noop() { int status; - struct sms_params *parms; - struct sms_params *reply; + struct sms_params *parms = NULL; + struct sms_params *reply = NULL; parms = (struct sms_params *) malloc(sizeof(*parms)); @@ -69,3 +70,33 @@ ok: free(parms); return status; } + +int sms_shutdown(why) + char *why; +{ + int status; + sms_params *parms=NULL; + sms_params *reply=NULL; + + parms = (sms_params *) malloc(sizeof(*parms)); + + parms->sms_procno = SMS_SHUTDOWN; + parms->sms_argc = 1; + parms->sms_argv = (char **)malloc(sizeof(char *) * 2); + parms->sms_argv[0] = why; + parms->sms_argv[1] = NULL; + + if ((status = sms_do_call(parms, &reply)) || (status = reply->sms_status)) + goto punt; + + +punt: + sms_destroy_reply(reply); +ok: + if(parms) { + if(parms->sms_argv) + free(parms->sms_argv); + free(parms); + } + return status; +}