投稿592448に示されているコード例を使用して、完全なファイル許可を付与しようとしています。次を使用してコードスニペットをコンパイルすると:
gcc -shared -mno-cygwin -Wall -o native.dll native.c
以下のエラーが発生します。
native.c:8: error: conflicting types for 'mode_t'
/usr/i686-pc-mingw32/sys-root/mingw/include/sys/types.h:99: error: previous declaration of 'mode_t' was here
native.c:21: error: parse error before numeric constant
native.c:22: error: parse error before numeric constant
native.c:23: error: parse error before numeric constant
native.c:25: error: parse error before "mode_t"
native.c:26: error: parse error before "mode_t"
native.c:28: error: parse error before "mode_t"
native.c:29: error: parse error before "mode_t"
コードを削除して以下に縮小しました。これは正常にコンパイルされますが、必要に応じてファイルのアクセス許可を変更していないようです。
#include <sys/stat.h>
#include <sys/types.h>
#include <errno.h>
#ifdef _WIN32
# include <io.h>
typedef signed int md_t;
static const md_t MS_MODE_MASK = 0x0000ffff; ///< low word
int fchmod(const char * path, md_t mode)
{
int result = _chmod(path, (mode & MS_MODE_MASK));
if (result != 0)
{
result = errno;
}
return (result);
}
#else
int fchmod(const char * path, md_t mode)
{
int result = chmod(path, mode);
if (result != 0)
{
result = errno;
}
return (result);
}
#endif
これを機能させる方法についての指針はありますか?