First use of string-queue utility.
[egate.git] / kernel / urp.c
index 5e2d9b1..1197a6c 100644 (file)
@@ -2,7 +2,10 @@
  * Europagate, 1995
  *
  * $Log: urp.c,v $
- * Revision 1.23  1995/03/28 08:01:28  adam
+ * Revision 1.24  1995/03/28 11:42:35  adam
+ * First use of string-queue utility.
+ *
+ * Revision 1.23  1995/03/28  08:01:28  adam
  * FIFO existence is used to test for a running kernel.
  *
  * Revision 1.22  1995/03/27  12:51:05  adam
 #include <unistd.h>
 #include <fcntl.h>
 
+#include <strqueue.h>
 #include "kernel.h"
 
-#define LINE_MAX 256
+#define LINE_MAX 1024
+static char line_buf[LINE_MAX+1];
 
 static void put_esc_str (const char *s)
 {
@@ -158,7 +163,6 @@ static int reopen_target (void)
     return 0;
 }
 
-static char line_buf[LINE_MAX+1];
 
 static struct command_word {
     char *default_value;
@@ -249,17 +253,18 @@ static char *error_no_search (struct error_no_struct *tab, int no)
     return NULL;
 }
 
-static int email_header (int fd, char *from_str, char *subject_str)
+static int email_header (struct str_queue *sq,
+                         char *from_str, char *subject_str)
 {
     *from_str = '\0';
-    *subject_str = '\0';
-    while (lgets (line_buf, LINE_MAX, fd))
+    *subject_str = '\0';    
+    while (str_queue_deq (sq, line_buf, LINE_MAX))
     {
         if (line_buf[0] == '\n')
             return 0;
-        if (strncmp (line_buf, "From ", 5) == 0)
+        if (memcmp (line_buf, "From ", 5) == 0)
             sscanf (line_buf+4, "%s", from_str);
-        if (strncmp (line_buf, "Subject: ", 9) == 0 &&
+        if (memcmp (line_buf, "Subject: ", 9) == 0 &&
             sscanf (line_buf+9, "%s", subject_str+1) == 1)
             strcpy (subject_str, line_buf+9);
     }
@@ -729,14 +734,15 @@ static int exec_command (const char *str)
     return 0;
 }
 
-int urp (int fd)
+int urp (struct str_queue *queue)
 {
     char from_str[128];
     char subject_str[128];
     int command_no = 0;
     char *reply_fname = NULL;
+    char *cp;
 
-    if (email_header (fd, from_str, subject_str))
+    if (email_header (queue, from_str, subject_str))
     {
         gw_log (GW_LOG_WARN, KERNEL_LOG, "No message body");
         return -1;
@@ -773,14 +779,12 @@ int urp (int fd)
         gw_log (GW_LOG_WARN, KERNEL_LOG, "No From in email header");
     fprintf (reply_fd, "%s\n", gw_res_get (info.kernel_res, "gw.msg.greeting",
                                            "Email->Z39.50 gateway"));
-    while (lgets (line_buf, LINE_MAX, fd))
+    while (str_queue_deq (queue, line_buf, LINE_MAX))
     {
-        char *cp;
-
         if (line_buf[0] == '\n')
             if (command_no)
            {
-               while (lgets (line_buf, LINE_MAX, fd))
+               while (str_queue_deq (queue, 0, 0))
                    ;
                 break;
            }