#include <h/mh.h>
+extern int client(char *args, char *protocol, char *service, int rproto,
+ char *response, int len_response);
+
#if defined(NNTP) && !defined(PSHSBR)
# undef NNTP
#endif
#include <h/popsbr.h>
#include <h/signals.h>
#include <signal.h>
+#include <errno.h>
#define TRM "."
#define TRMLEN (sizeof TRM - 1)
-extern int errno;
-
static int poprint = 0;
static int pophack = 0;
return NULL;
}
- *++lp = NULL;
+ *(++lp) = '\0';
snprintf (buffer, sizeof(buffer), "%s%s", cp, pass);
MD5Init (&mdContext);
cp += 2;
buflen -= 2;
}
- *cp = NULL;
+ *cp = '\0';
return buffer;
}
int
-pop_init (char *host, char *user, char *pass, int snoop, int rpop)
+pop_init (char *host, char *user, char *pass, int snoop, int rpop, int kpop)
{
int fd1, fd2;
char buffer[BUFSIZ];
#endif
#ifndef NNTP
-# ifndef KPOP
- if ((fd1 = client (host, "tcp", POPSERVICE, rpop, response, sizeof(response))) == NOTOK)
-# else /* KPOP */
- snprintf (buffer, sizeof(buffer), "%s/%s", KPOP_PRINCIPAL, POPSERVICE);
- if ((fd1 = client (host, "tcp", buffer, rpop, response, sizeof(response))) == NOTOK)
-# endif
+# ifdef KPOP
+ if ( kpop ) {
+ snprintf (buffer, sizeof(buffer), "%s/%s", KPOP_PRINCIPAL, "kpop");
+ if ((fd1 = client (host, "tcp", buffer, 0, response, sizeof(response))) == NOTOK) {
+ return NOTOK;
+ }
+ } else {
+# endif /* KPOP */
+ if ((fd1 = client (host, "tcp", POPSERVICE, rpop, response, sizeof(response))) == NOTOK) {
+ return NOTOK;
+ }
+# ifdef KPOP
+ }
+# endif /* KPOP */
#else /* NNTP */
if ((fd1 = client (host, "tcp", "nntp", rpop, response, sizeof(response))) == NOTOK)
-#endif
return NOTOK;
+#endif
if ((fd2 = dup (fd1)) == NOTOK) {
char *s;
char *cp, buffer[BUFSIZ];
vsnprintf (buffer, sizeof(buffer), fmt, ap);
- if (poprint)
+ if (poprint) {
if (pophack) {
if ((cp = strchr (buffer, ' ')))
*cp = 0;
}
else
fprintf (stderr, "---> %s\n", buffer);
+ }
if (putline (buffer, output) == NOTOK)
return NOTOK;