static char rcsid[] = "$Id: safeopen.c,v 1.6 2006/04/09 07:37:05 hurtta Exp $"; /****************************************************************************** * The Elm (ME+) Mail System - $Revision: 1.6 $ $State: Exp $ * * Modified by: Kari Hurtta * (was hurtta+elm@ozone.FMI.FI) * * Initially written by: Zoltan Hidvegi *****************************************************************************/ #include #include #include #include "headers.h" FILE *safeopen(name) char *name; { FILE *fp; int fd = open(name, O_WRONLY | O_CREAT | O_EXCL, 0600); if (fd < 0 && (unlink(name) || (fd = open(name, O_WRONLY | O_CREAT | O_EXCL, 0600)) < 0)) return NULL; if (! (fp = fdopen(fd, "w"))) { close(fd); unlink(name); } return fp; } FILE *safeopen_rdwr(name) char *name; { FILE *fp; int fd = open(name, O_RDWR | O_CREAT | O_EXCL, 0600); if (fd < 0 && (unlink(name) || (fd = open(name, O_RDWR | O_CREAT | O_EXCL, 0600)) < 0)) return NULL; if (! (fp = fdopen(fd, "w+"))) { close(fd); unlink(name); } return fp; } /* * Local Variables: * mode:c * c-basic-offset:4 * buffer-file-coding-system: iso-8859-1 * End: */