BSD 4_3_Net_2 release
[unix-history] / usr / src / usr.bin / mail / temp.c
index ef26cc6..c03684f 100644 (file)
@@ -2,17 +2,38 @@
  * Copyright (c) 1980 Regents of the University of California.
  * All rights reserved.
  *
  * Copyright (c) 1980 Regents of the University of California.
  * All rights reserved.
  *
- * Redistribution and use in source and binary forms are permitted
- * provided that this notice is preserved and that due credit is given
- * to the University of California at Berkeley. The name of the University
- * may not be used to endorse or promote products derived from this
- * software without specific prior written permission. This software
- * is provided ``as is'' without express or implied warranty.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by the University of
+ *     California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
  */
 
  */
 
-#ifdef notdef
-static char sccsid[] = "@(#)temp.c     5.4 (Berkeley) %G%";
-#endif /* notdef */
+#ifndef lint
+static char sccsid[] = "@(#)temp.c     5.15 (Berkeley) 2/3/91";
+#endif /* not lint */
 
 #include "rcv.h"
 
 
 #include "rcv.h"
 
@@ -22,58 +43,50 @@ static char sccsid[] = "@(#)temp.c  5.4 (Berkeley) %G%";
  * Give names to all the temporary files that we will need.
  */
 
  * Give names to all the temporary files that we will need.
  */
 
-char   tempMail[14];
-char   tempQuit[14];
-char   tempEdit[14];
-char   tempSet[14];
-char   tempResid[14];
-char   tempMesg[14];
+char   tempMail[24];
+char   tempQuit[24];
+char   tempEdit[24];
+char   tempResid[24];
+char   tempMesg[24];
 
 tinit()
 {
        register char *cp;
 
 tinit()
 {
        register char *cp;
-       char uname[PATHSIZE];
-       register int pid;
-       uid_t getuid();
 
 
-       pid = getpid();
-       sprintf(tempMail, "/tmp/Rs%05d", pid);
-       sprintf(tempResid, "/tmp/Rq%05d", pid);
-       sprintf(tempQuit, "/tmp/Rm%05d", pid);
-       sprintf(tempEdit, "/tmp/Re%05d", pid);
-       sprintf(tempSet, "/tmp/Rx%05d", pid);
-       sprintf(tempMesg, "/tmp/Rx%05d", pid);
+       strcpy(tempMail, _PATH_TMP);
+       mktemp(strcat(tempMail, "RsXXXXXX"));
+       strcpy(tempResid, _PATH_TMP);
+       mktemp(strcat(tempResid, "RqXXXXXX"));
+       strcpy(tempQuit, _PATH_TMP);
+       mktemp(strcat(tempQuit, "RmXXXXXX"));
+       strcpy(tempEdit, _PATH_TMP);
+       mktemp(strcat(tempEdit, "ReXXXXXX"));
+       strcpy(tempMesg, _PATH_TMP);
+       mktemp(strcat(tempMesg, "RxXXXXXX"));
 
 
-       if (strlen(myname) != 0) {
-               uid = getuserid(myname);
-               if (uid == -1) {
+       /*
+        * It's okay to call savestr in here because main will
+        * do a spreserve() after us.
+        */
+       if (myname != NOSTR) {
+               if (getuserid(myname) < 0) {
                        printf("\"%s\" is not a user of this system\n",
                            myname);
                        exit(1);
                }
                        printf("\"%s\" is not a user of this system\n",
                            myname);
                        exit(1);
                }
-       }
-       else {
-               uid = getuid();
-               if (username(uid, uname) < 0) {
-                       strcpy(myname, "ubluit");
+       } else {
+               if ((cp = username()) == NOSTR) {
+                       myname = "ubluit";
                        if (rcvmode) {
                                printf("Who are you!?\n");
                                exit(1);
                        }
                } else
                        if (rcvmode) {
                                printf("Who are you!?\n");
                                exit(1);
                        }
                } else
-                       strcpy(myname, uname);
+                       myname = savestr(cp);
        }
        }
-       if ((cp = value("HOME")) == NOSTR)
+       if ((cp = getenv("HOME")) == NOSTR)
                cp = ".";
                cp = ".";
-       strcpy(homedir, cp);
-       findmail();
-       strcpy(copy(homedir, mbox), "/mbox");
-       strcpy(copy(homedir, mailrc), "/.mailrc");
-       strcpy(copy(homedir, deadletter), "/dead.letter");
-       if (debug) {
-               printf("uid = %d, user = %s, mailname = %s\n",
-                   uid, myname, mailname);
-               printf("deadletter = %s, mailrc = %s, mbox = %s\n",
-                   deadletter, mailrc, mbox);
-       }
+       homedir = savestr(cp);
+       if (debug)
+               printf("user = %s, homedir = %s\n", myname, homedir);
 }
 }