+# include "../hdr/macros.h"
+SCCSID(@(#)xcreat 2.1);
+
+/*
+ "Sensible" creat: write permission in directory is required in
+ all cases, and created file is guaranteed to have specified mode
+ and be owned by effective user.
+ (It does this by first unlinking the file to be created.)
+ Returns file descriptor on success,
+ fatal() on failure.
+*/
+
+xcreat(name,mode)
+char *name;
+int mode;
+{
+ register int fd;
+ register char *d;
+
+ d = alloca(size(name));
+ copy(name,d);
+ if (!exists(dname(d)))
+ fatal(sprintf(Error,"directory `%s' nonexistent (ut1)",d));
+ unlink(name);
+ if ((fd = creat(name,mode)) >= 0)
+ return(fd);
+ return(xmsg(name,"xcreat"));
+}