]> andersk Git - moira.git/blobdiff - lib/mr_query.c
make it work with negative keys
[moira.git] / lib / mr_query.c
index ab57d674425e6056767852f98b7730ee1826866f..4e59282ef24d4a88a20600c1c523ec2f5bc8f7c9 100644 (file)
@@ -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
+ *     <mit-copyright.h>.
  * 
  */
 
@@ -18,6 +13,7 @@
 static char *rcsid_sms_query_c = "$Header$";
 #endif lint
 
+#include <mit-copyright.h>
 #include "sms_private.h"
 
 /*
@@ -26,6 +22,7 @@ static char *rcsid_sms_query_c = "$Header$";
  * It builds a new argument vector with the query handle prepended,
  * and calls sms_query_internal.
  */
+int level = 0;
 
 int sms_query(name, argc, argv, callproc, callarg)
     char *name;                /* Query name */
@@ -66,10 +63,14 @@ int sms_query_internal(argc, argv, callproc, callarg)
     register sms_params *params = NULL;
     sms_params *reply = NULL;
     int stopcallbacks = 0;
+
+    if (level) return SMS_QUERY_NOT_REENTRANT;
     
     CHECK_CONNECTED;
+    level++;
 
-    params = &params_st;
+    params = &params_st; 
+    params->sms_version_no = sending_version_no;
     params->sms_procno = SMS_QUERY;
     params->sms_argc = argc;
     params->sms_argl = NULL;
@@ -89,24 +90,16 @@ int sms_query_internal(argc, argv, callproc, callarg)
                             (int (*)())NULL);
        queue_operation(_sms_conn, CON_INPUT, _sms_recv_op);
 
-       complete_operation(_sms_recv_op);
+       sms_complete_operation(_sms_recv_op);
        if (OP_STATUS(_sms_recv_op) != OP_COMPLETE) {
            sms_disconnect();
-           return SMS_ABORTED;
+           status = SMS_ABORTED;
+           goto punt_1;
        }
     }  
 punt:
     sms_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:
- */
This page took 0.037275 seconds and 4 git commands to generate.