home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Fred Fish Collection 1.5
/
ffcollection-1-5-1992-11.iso
/
ff_disks
/
300-399
/
ff319.lzh
/
CNewsSrc
/
cnews.src.lzh
/
libfake
/
mkdir.c
< prev
next >
Wrap
C/C++ Source or Header
|
1980-01-01
|
769b
|
42 lines
/*
* 4.2BSD mkdir simulation
*/
#include <stdio.h>
#include <errno.h>
#include <sys/types.h> /* argh */
#include "libc.h"
/* system call returns */
#define SYS_OK 0
#define SYS_ERR (-1)
#define UMASK_MASK 0777
#define STRLEN(s) (sizeof (s) - 1) /* s must be a char array */
int
mkdir(dir, mode)
char *dir;
int mode;
{
register char *cbuf = malloc((unsigned)STRLEN("mkdir ") + strlen(dir) + 1);
register int oldmask, ret;
if (cbuf == NULL) {
errno = ENOMEM; /* kludge */
return SYS_ERR;
}
oldmask = umask(0);
(void) umask(~(mode & ~oldmask) & UMASK_MASK);
(void) sprintf(cbuf, "mkdir %s", dir);
ret = (system(cbuf) != 0? SYS_ERR: SYS_OK);
if (ret == SYS_ERR)
errno = EINVAL; /* kludge */
(void) umask(oldmask);
free(cbuf);
return ret;
}