Initial commit of John Brezak's changes --- the addition of autoconf support
authorTheodore Tso <tytso@mit.edu>
Tue, 9 Aug 1994 02:06:52 +0000 (02:06 +0000)
committerTheodore Tso <tytso@mit.edu>
Tue, 9 Aug 1994 02:06:52 +0000 (02:06 +0000)
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@4071 dc483132-0cff-0310-8789-dd5450dbe970

src/appl/movemail/Makefile.in [new file with mode: 0644]
src/appl/movemail/configure.in [new file with mode: 0644]
src/appl/movemail/movemail.c

diff --git a/src/appl/movemail/Makefile.in b/src/appl/movemail/Makefile.in
new file mode 100644 (file)
index 0000000..e06202a
--- /dev/null
@@ -0,0 +1,24 @@
+CFLAGS = $(CCOPTS) -DKERBEROS -DKRB5 -DMAIL_USE_POP $(DEFS) $(LOCALINCLUDE)
+LDFLAGS = -g
+
+OBJS = movemail.o movemail-mmdf.o
+
+all::
+
+KLIB = $(TOPLIBD)/libkrb5.a $(TOPLIBD)/libcrypto.a $(ISODELIB) $(COMERRLIB) $(DBMLIB)
+
+HESIODLIB = 
+
+movemail: movemail.o
+       $(CC) $(CFLAGS) -o movemail movemail.o $(KLIB) $(HESIODLIB)
+
+all:: movemail
+
+clean::
+       $(RM) movemail
+
+install::
+       cp movemail ${DESTDIR}$(CLIENT_BINDIR)/movemail
+
+movemail.o:    $(srcdir)/movemail.c
+
diff --git a/src/appl/movemail/configure.in b/src/appl/movemail/configure.in
new file mode 100644 (file)
index 0000000..71269d4
--- /dev/null
@@ -0,0 +1,6 @@
+AC_INIT(movemail.c)
+WITH_CCOPTS
+AC_SET_BUILDTOP
+CONFIG_RULES
+KRB_INCLUDE
+AC_OUTPUT(Makefile,[EXTRA_RULES])
index 29dddf74b88950b49b6421bbcef8bf1ebefd1477..894773112243b3c52d5e48e0c6984e6874ab879f 100644 (file)
@@ -292,14 +292,9 @@ error (s1, s2, s3)
 pfatal_with_name (name)
      char *name;
 {
-  extern int errno, sys_nerr;
-  extern char *sys_errlist[];
   char *s;
 
-  if (errno < sys_nerr)
-    s = concat ("", sys_errlist[errno], " for %s");
-  else
-    s = "cannot open %s";
+  s = concat ("", strerror(errno), " for %s");
   fatal (s, name);
 }
 
@@ -341,7 +336,12 @@ xmalloc (size)
 #include <netinet/in.h>
 #include <netdb.h>
 #ifdef KERBEROS
-#define        POP_SERVICE     "pop"
+#ifndef POP_SNAME
+#define        POP_SNAME       "pop"
+#endif
+#ifndef KPOP_SERVICE
+#define KPOP_SERVICE   "kpop"
+#endif
 #ifdef KRB4
 #ifdef KRB5
  #error can only use one of KRB4 or KRB5
@@ -473,6 +473,30 @@ char *outfile;
        }
        mbx_delimit_end(mbf);
        fflush(mbf);
+       if (ferror(mbf)) {
+         error("Error in fflush: %s", get_errmsg());
+         pop_command("QUIT");
+         close(mbfi);
+         return(1);
+       }
+    }
+
+    /* On AFS, a call to write() only modifies the file in the local
+       workstation's AFS cache.  The changes are not written to the server
+       until a call to fsync() or close() is made.  Users with AFS home
+       directories have lost mail when over quota because these checks were
+       not made in previous versions of movemail. */
+
+    if (fsync(mbfi) < 0) {
+      error("Error in fsync: %s", get_errmsg());
+      pop_command("QUIT");
+      return(1);
+    }
+
+    if (close(mbfi) == -1) {
+      error("Error in close: %s", get_errmsg());
+      pop_command("QUIT");
+      return(1);
     }
 
     for (i = 1; i <= nmsgs; i++) {
@@ -485,7 +509,6 @@ char *outfile;
     }
 
     pop_command("QUIT");
-    close(mbfi);
     return(0);
 }
 
@@ -510,7 +533,7 @@ char *host;
     krb5_error_code retval;
     krb5_ccache ccdef;
     krb5_principal client, server;
-    krb5_error *err_ret;
+    krb5_error *err_ret = NULL;
     register char *cp;
 #endif /* KRB5 */
 #endif /* KERBEROS */
@@ -521,7 +544,7 @@ char *host;
     }
 
 #ifdef KERBEROS
-    sp = getservbyname("kpop", "tcp");
+    sp = getservbyname(KPOP_SERVICE, "tcp");
 #else
     sp = getservbyname("pop", "tcp");
 #endif
@@ -557,7 +580,7 @@ char *host;
 #ifdef KERBEROS
 #ifdef KRB4
     ticket = (KTEXT) malloc(sizeof(KTEXT_ST));
-    rem = krb_sendauth(0L, s, ticket, POP_SERVICE, hp->h_name,
+    rem = krb_sendauth(0L, s, ticket, POP_SNAME, hp->h_name,
                       (char *) krb_realmofhost(hp->h_name),
                       (unsigned long)0, &msg_data, &cred, schedule,
                       (struct sockaddr_in *)0,
@@ -582,12 +605,14 @@ char *host;
        goto krb5error;
     }
 
+#if 0
     /* lower-case to get name for "instance" part of service name */
     for (cp = hp->h_name; *cp; cp++)
        if (isupper(*cp))
            *cp = tolower(*cp);
+#endif
 
-    if (retval = krb5_sname_to_principal(hp->h_name, POP_SERVICE,
+    if (retval = krb5_sname_to_principal(hp->h_name, POP_SNAME,
                                         KRB5_NT_SRV_HST, &server)) {
        goto krb5error;
     }
@@ -679,7 +704,7 @@ int *nmsgs, *nbytes;
 pop_retr(msgno, action, arg)
 int (*action)();
 {
-    char buf[128];
+    char buf[1024];
 
     sprintf(buf, "RETR %d", msgno);
     if (debug) fprintf(stderr, "%s\n", buf);
@@ -751,14 +776,9 @@ FILE *f;
 char *
 get_errmsg()
 {
-    extern int errno, sys_nerr;
-    extern char *sys_errlist[];
     char *s;
 
-    if (errno < sys_nerr)
-      s = sys_errlist[errno];
-    else
-      s = "unknown error";
+    s = strerror(errno);
     return(s);
 }
 
@@ -787,13 +807,21 @@ FILE *mbf;
 mbx_delimit_begin(mbf)
 FILE *mbf;
 {
+#ifdef OUTPUT_MMDF_FORMAT
+    fputs("\ 1\ 1\ 1\ 1\n", mbf);
+#else  
     fputs("\f\n0, unseen,,\n", mbf);
+#endif
 }
 
 mbx_delimit_end(mbf)
 FILE *mbf;
 {
+#ifdef OUTPUT_MMDF_FORMAT
+    fputs("\ 1\ 1\ 1\ 1\n", mbf);
+#else  
     putc('\037', mbf);
+#endif
 }
 
 #endif /* MAIL_USE_POP */