/* sys/chmod.c (emx+gcc) -- Copyright (c) 1992-1993 by Eberhard Mattes */

#include <sys/emx.h>
#include <string.h>
#include <errno.h>
#include <os2emx.h>
#include "syscalls.h"

int __chmod (const char *name, int flag, int attr)
{
  ULONG rc;
  FILESTATUS3 info;

  if (flag < 0 || flag > 1)
    {
      errno = EINVAL;
      return (-1);
    }
  if ((name[0] == '/' || name[0] == '\\') && strlen (name) >= 6 &&
      memicmp (name+1, "pipe", 4) == 0 && (name[5] == '/' || name[5] == '\\'))
    {
      errno = ENOENT;
      return (-1);
    }
  rc = DosQueryPathInfo (name, FIL_STANDARD, &info, sizeof (info));
  if (rc != 0)
    {
      _sys_set_errno (rc);
      return (-1);
    }
  if (flag == 0)
    return (info.attrFile);
  info.attrFile = attr;
  rc = DosSetPathInfo (name, FIL_STANDARD, &info, sizeof (info), 0);
  if (rc != 0)
    {
      _sys_set_errno (rc);
      return (-1);
    }
  return (0);
}
