temp.c revision 27643
11590Srgrimes/* 21590Srgrimes * Copyright (c) 1980, 1993 31590Srgrimes * The Regents of the University of California. All rights reserved. 41590Srgrimes * 51590Srgrimes * Redistribution and use in source and binary forms, with or without 61590Srgrimes * modification, are permitted provided that the following conditions 71590Srgrimes * are met: 81590Srgrimes * 1. Redistributions of source code must retain the above copyright 91590Srgrimes * notice, this list of conditions and the following disclaimer. 101590Srgrimes * 2. Redistributions in binary form must reproduce the above copyright 111590Srgrimes * notice, this list of conditions and the following disclaimer in the 121590Srgrimes * documentation and/or other materials provided with the distribution. 131590Srgrimes * 3. All advertising materials mentioning features or use of this software 141590Srgrimes * must display the following acknowledgement: 151590Srgrimes * This product includes software developed by the University of 161590Srgrimes * California, Berkeley and its contributors. 171590Srgrimes * 4. Neither the name of the University nor the names of its contributors 181590Srgrimes * may be used to endorse or promote products derived from this software 191590Srgrimes * without specific prior written permission. 201590Srgrimes * 211590Srgrimes * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 221590Srgrimes * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 231590Srgrimes * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 241590Srgrimes * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 251590Srgrimes * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 261590Srgrimes * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 271590Srgrimes * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 281590Srgrimes * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 291590Srgrimes * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 301590Srgrimes * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 311590Srgrimes * SUCH DAMAGE. 321590Srgrimes */ 331590Srgrimes 341590Srgrimes#ifndef lint 3527643Scharnier#if 0 361590Srgrimesstatic char sccsid[] = "@(#)temp.c 8.1 (Berkeley) 6/6/93"; 3727643Scharnier#endif 3827643Scharnierstatic const char rcsid[] = 3927643Scharnier "$Id$"; 401590Srgrimes#endif /* not lint */ 411590Srgrimes 421590Srgrimes#include "rcv.h" 4327643Scharnier#include <err.h> 441590Srgrimes#include "extern.h" 451590Srgrimes 461590Srgrimes/* 471590Srgrimes * Mail -- a mail program 481590Srgrimes * 491590Srgrimes * Give names to all the temporary files that we will need. 501590Srgrimes */ 511590Srgrimes 521590Srgrimeschar tempMail[24]; 531590Srgrimeschar tempQuit[24]; 541590Srgrimeschar tempEdit[24]; 551590Srgrimeschar tempResid[24]; 561590Srgrimeschar tempMesg[24]; 571590Srgrimeschar *tmpdir; 581590Srgrimes 591590Srgrimesvoid 601590Srgrimestinit() 611590Srgrimes{ 621590Srgrimes register char *cp; 631590Srgrimes int len; 641590Srgrimes 651590Srgrimes if ((tmpdir = getenv("TMPDIR")) == NULL) 661590Srgrimes tmpdir = _PATH_TMP; 671590Srgrimes else { 681590Srgrimes len = strlen(tmpdir); 6927643Scharnier if ((cp = malloc(len + 2)) == NULL) 7027643Scharnier err(1, NULL); 711590Srgrimes (void)strcpy(cp, tmpdir); 721590Srgrimes cp[len] = '/'; 731590Srgrimes cp[len + 1] = '\0'; 741590Srgrimes tmpdir = cp; 751590Srgrimes } 768874Srgrimes 771590Srgrimes strcpy(tempMail, tmpdir); 781590Srgrimes mktemp(strcat(tempMail, "RsXXXXXX")); 791590Srgrimes strcpy(tempResid, tmpdir); 801590Srgrimes mktemp(strcat(tempResid, "RqXXXXXX")); 811590Srgrimes strcpy(tempQuit, tmpdir); 821590Srgrimes mktemp(strcat(tempQuit, "RmXXXXXX")); 831590Srgrimes strcpy(tempEdit, tmpdir); 841590Srgrimes mktemp(strcat(tempEdit, "ReXXXXXX")); 851590Srgrimes strcpy(tempMesg, tmpdir); 861590Srgrimes mktemp(strcat(tempMesg, "RxXXXXXX")); 871590Srgrimes 881590Srgrimes /* 891590Srgrimes * It's okay to call savestr in here because main will 901590Srgrimes * do a spreserve() after us. 911590Srgrimes */ 921590Srgrimes if (myname != NOSTR) { 931590Srgrimes if (getuserid(myname) < 0) { 941590Srgrimes printf("\"%s\" is not a user of this system\n", 951590Srgrimes myname); 961590Srgrimes exit(1); 971590Srgrimes } 981590Srgrimes } else { 991590Srgrimes if ((cp = username()) == NOSTR) { 1001590Srgrimes myname = "ubluit"; 1011590Srgrimes if (rcvmode) { 1021590Srgrimes printf("Who are you!?\n"); 1031590Srgrimes exit(1); 1041590Srgrimes } 1051590Srgrimes } else 1061590Srgrimes myname = savestr(cp); 1071590Srgrimes } 1081590Srgrimes if ((cp = getenv("HOME")) == NOSTR) 1091590Srgrimes cp = "."; 1101590Srgrimes homedir = savestr(cp); 1111590Srgrimes if (debug) 1121590Srgrimes printf("user = %s, homedir = %s\n", myname, homedir); 1131590Srgrimes} 114