/****************************************************************************
 *
 * $Source: /cvsroot/riscossmbserver/smbserver/src/unix/c/mkdir,v $
 * $Date: 1999/11/23 22:05:11 $
 * $Revision: 1.2 $
 * $State: Exp $
 * $Author: david $
 *
 * $Log: mkdir,v $
 * Revision 1.2  1999/11/23 22:05:11  david
 * Increased filename length to MAXPATHLEN
 * uname and dirent - support for spaces in a filename which
 * is translated to 0xa0 on RISCOS and mapping of obscure DOS
 * filename characters to RICOS characters as 2-327 or the PRMs
 *
 * Revision 1.1  1999/05/16 12:00:09  david
 * Initial revision
 *
 * Revision 1.2  1996/10/30 21:59:01  unixlib
 * Massive changes made by Nick Burret and Peter Burwood.
 *
 * Revision 1.1  1996/04/19 21:35:27  simon
 * Initial revision
 *
 ***************************************************************************/

static const char rcs_id[] = "$Id: mkdir,v 1.2 1999/11/23 22:05:11 david Exp $";

#if 0

#include <errno.h>
#include <unistd.h>
#include <sys/os.h>
#include <sys/stat.h>

#else

#include "includes.h"
#include "swis.h"
#include "my_os.h"                             

/*#define os_file my_os_file
#define os_fclose my_os_fclose
#define os_args my_os_args */

#endif


int mkdir (const char *path, mode_t mode)
{
  int r[10];
  _kernel_oserror *e;
  char *dir;

  dir = __uname ((char *)path, 1);

  if (!myos_file (0x05, dir, r))
    {
      if (r[0])
	{
	  errno = EEXIST;
	  return (-1);
	}
    }

  r[4] = 0;			/* default entires per dir */
  if (e = myos_file (0x08, dir, r))
    {
    /*  __seterr (e); */
      return (-1);
    }

  /* Set protection for directory. */
  r[5] = (r[5] & 0xFFFFFF00) | ((mode & 0400) >> 8) | ((mode & 0200) >> 6) |
    ((mode & 0004) << 2) | ((mode & 0002) << 4);

  if (e = myos_file (4, dir, r))
    {
   /*   __seterr (e); */
      return (-1);
    }

  return (0);
}
