X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=kernel%2Furp.c;h=914e279b3cc971c9e2162d771cb17a5213c7217f;hb=refs%2Fheads%2Forigin;hp=ef3378c4b28e1138728b20242edb8ac411764f72;hpb=918a8257a2f64e0965abc4c48eea774949c19883;p=egate.git diff --git a/kernel/urp.c b/kernel/urp.c index ef3378c..914e279 100644 --- a/kernel/urp.c +++ b/kernel/urp.c @@ -45,7 +45,16 @@ * Europagate, 1995 * * $Log: urp.c,v $ - * Revision 1.48 1996/02/12 10:04:57 adam + * Revision 1.51 2001/02/26 14:32:36 adam + * Updated for YAZ 1.7. HTML output tidy up. Added LOC target. + * + * Revision 1.50 1996/03/01 16:09:30 adam + * New setting: gw.msg.replyto that sets Reply-To in user response. + * + * Revision 1.49 1996/03/01 14:25:28 adam + * Email gateway obeys 'Reply-To:' in header. + * + * Revision 1.48 1996/02/12 10:04:57 adam * The gateway doesn't try to reconnect if it is already known that * it will fail (connect_fail flag introduced). * @@ -376,6 +385,8 @@ static int email_header (struct str_queue *sq, return 0; if (memcmp (line_buf, "From ", 5) == 0) sscanf (line_buf+4, "%s", from_str); + if (memcmp (line_buf, "Reply-To: ", 10) == 0) + sscanf (line_buf+10, "%s", from_str); if (memcmp (line_buf, "Subject: ", 9) == 0 && sscanf (line_buf+9, "%s", subject_str+1) == 1) strcpy (subject_str, line_buf+9); @@ -739,40 +750,45 @@ static void present (const char *set, int offset, int number, continue; } } - if (record_log_fd != -1) - write (record_log_fd, pp->record, strlen(pp->record)); - rec = iso2709_cvt (pp->record); - if (rec) - { + if (pp->record) + { + if (record_log_fd != -1) + write (record_log_fd, pp->record, strlen(pp->record)); + rec = iso2709_cvt (pp->record); + if (rec) + { #if USE_FML - strcpy (format_str, - gw_res_get (info.kernel_res, - "gw.display.format", "")); - if (format_token) - { - len = format_token->len; - if (len >= sizeof(format_str)) - len = sizeof(format_str)-1; - memcpy (format_str, format_token->name, len); - format_str[len] = '\0'; - } - if (info.fml && *format_str && - (!strcmp (format_str, "0") || !strcmp (format_str, "1") - || !strcmp(format_str, "2"))) - { - arg_ar[0] = "\\f"; - arg_ar[1] = format_str; - arg_ar[2] = " \\list"; - arg_ar[3] = marc_to_str (info.fml, rec); - arg_ar[4] = NULL; - fml_exec_call_argv (info.fml, arg_ar); - } - else - iso2709_display (rec, reply_fd); + strcpy (format_str, + gw_res_get (info.kernel_res, + "gw.display.format", "")); + if (format_token) + { + len = format_token->len; + if (len >= sizeof(format_str)) + len = sizeof(format_str)-1; + memcpy (format_str, format_token->name, len); + format_str[len] = '\0'; + } + if (info.fml && *format_str && + (!strcmp (format_str, "0") || !strcmp (format_str, "1") + || !strcmp(format_str, "2"))) + { + arg_ar[0] = "\\f"; + arg_ar[1] = format_str; + arg_ar[2] = " \\list"; + arg_ar[3] = marc_to_str (info.fml, rec); + arg_ar[4] = NULL; + fml_exec_call_argv (info.fml, arg_ar); + } + else + iso2709_display (rec, reply_fd); #else - iso2709_display (rec, reply_fd); + iso2709_display (rec, reply_fd); #endif - iso2709_rm (rec); + iso2709_rm (rec); + } + else + fprintf (reply_fd, "Record type not supported\n"); } else fprintf (reply_fd, "Not a MARC record\n"); @@ -1164,6 +1180,7 @@ static int exec_command (const char *str, int *stop_flag) int urp_start (int continuation, struct str_queue *queue) { char subject_str[128]; + const char *cp; info.command_no = 0; info.reply_fname = NULL; @@ -1192,6 +1209,9 @@ int urp_start (int continuation, struct str_queue *queue) fprintf (reply_fd, "From: %s\n", gw_res_get (info.kernel_res, "gw.msg.from", "Email-Z39.50 gateway")); + cp = gw_res_get (info.kernel_res, "gw.msg.replyto", NULL); + if (cp) + fprintf (reply_fd, "Reply-To: %s\n", cp); fprintf (reply_fd, "Subject: "); if (*subject_str) fprintf (reply_fd, "Z39.50 Re: %s", subject_str);