update for HEAD-2003091401
[reactos.git] / lib / crtdll / io / chmod.c
1 #include <windows.h>
2 #include <msvcrt/io.h>
3
4 #define NDEBUG
5 #include <msvcrt/msvcrtdbg.h>
6
7 #define mode_t int
8
9
10 /*
11  * @implemented
12  */
13 int _chmod(const char* filename, mode_t mode)
14 {
15     DWORD FileAttributes = 0;
16     DPRINT("_chmod('%s', %x)\n", filename, mode);
17
18     FileAttributes = GetFileAttributesA(filename);
19     if ( FileAttributes == -1 )
20         return -1;
21
22     if ( mode == 0 )
23         return -1;
24
25     if ((mode & _S_IREAD) == _S_IREAD && (mode & _S_IWRITE) != _S_IWRITE)
26         FileAttributes &= FILE_ATTRIBUTE_READONLY;
27     else if (((mode & _S_IREAD) != _S_IREAD) && ((mode & _S_IWRITE) == _S_IWRITE))
28         FileAttributes &= FILE_ATTRIBUTE_NORMAL;
29     else
30         FileAttributes &= FILE_ATTRIBUTE_NORMAL;
31
32     if (SetFileAttributesA(filename, FileAttributes) == FALSE)
33         return -1;
34
35     return 1;
36 }