--- /dev/null
+
+#pragma once
+
+#include <sys/types.h>
+
+__inline struct group * getgrnam(char* g){return 0;}
+
+struct group
+ {
+ char *gr_name;
+ char *gr_passwd;
+ __gid_t gr_gid;
+ char **gr_mem;
+ };
+
+#define getgrgid(i) NULL
--- /dev/null
+#ifndef _LINUX_TYPES_H
+#define _LINUX_TYPES_H
+
+//#ifndef _MSC_VER
+//#error _MSC_VER not defined
+//#endif
+
+#include <sys/types.h>
+
+typedef unsigned __int8 __u8;
+typedef signed __int8 __s8;
+
+typedef signed __int64 __s64;
+typedef unsigned __int64 __u64;
+
+typedef signed __int16 __s16;
+typedef unsigned __int16 __u16;
+
+typedef signed __int32 __s32;
+typedef unsigned __int32 __u32;
+
+typedef signed __int64 __s64;
+typedef unsigned __int64 __u64;
+
+
+//typedef __u32 ino_t;
+typedef __u32 dev_t;
+typedef __u32 uid_t;
+typedef __u32 gid_t;
+
+#include <stdint.h>
+
+#endif /* LINUX_TYPES_H */
--- /dev/null
+
+#pragma once
+
+#include <sys/types.h>
+
+__inline struct passwd* getpwnam (char* g){return 0;}
+
+struct passwd
+{
+ char *pw_name;
+ char *pw_passwd;
+ __uid_t pw_uid;
+ __gid_t pw_gid;
+ char *pw_gecos;
+ char *pw_dir;
+ char *pw_shell;
+};
+
+#define getpwuid(i) NULL
+
--- /dev/null
+
+#pragma once
+
+#if HAVE_SYS_STAT_H
+#include_next <sys/stat.h>
+#endif
+
+#ifndef lstat
+#define lstat stat
+#endif
+
+#ifndef S_ISLNK
+#ifdef __S_IFLNK
+#define S_ISLNK(mode) __S_ISTYPE((mode), __S_IFLNK)
+#else
+#define S_ISLNK(mode) 0
+#endif
+#endif
+
+#define link(a, b) CreateHardLink((a), (b), NULL)
--- /dev/null
+
+#pragma once
+
+/*
+ * Fall back to Linux's definitions of makedev and major are needed.
+ * The search_sysfs_block() function is highly unlikely to work on
+ * non-Linux systems anyway.
+ */
+#ifndef makedev
+#define makedev(maj, min) (((maj) << 8) + (min))
+#endif
\ No newline at end of file
--- /dev/null
+
+#pragma once
+
+#include_next <sys/types.h>
+
+#include <linux/types.h>
+
+typedef unsigned short __uid_t;
+typedef unsigned short __gid_t;
--- /dev/null
+
+#pragma once
+
+#include_next <unistd.h>
+
+__inline __uid_t getuid(void){return 0;}
+__inline int geteuid(void){return 1;}
+
+__inline __gid_t getgid(void){return 0;}
+__inline __gid_t getegid(void){return 0;}
+
+// no-oped sync
+__inline void sync(void){};
],
shared_libs: ["libext2_uuid"],
+ target: {
+ windows: {
+ include_dirs: [ "external/e2fsprogs/include/mingw" ],
+ cflags: [
+ "-Wno-pointer-to-int-cast",
+ ],
+ enabled: true
+ },
+ },
+
cflags: [
"-W",
"-Wall",
"-fno-strict-aliasing",
- "-Wno-macro-redefined",
],
header_libs: ["libext2-headers"],
* @member: the name of the list_struct within the struct.
*/
#define list_entry(ptr, type, member) \
- ((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member)))
+ ((type *)((char *)(ptr)-(unsigned long)(intptr_t)(&((type *)0)->member)))
/**
* list_for_each - iterate over elements in a list
#endif
#include "blkidP.h"
+#ifdef _WIN32
+#include "windows.h"
+#endif
+
static int save_dev(blkid_dev dev, FILE *file)
{
struct list_head *p;
file = fdopen(fd, "w");
opened = tmp;
}
+#ifndef _WIN32
fchmod(fd, 0644);
+#else
+ chmod(tmp, 0644);
+#endif
}
}
--- /dev/null
+#ifndef __APPLE__
+#define HAVE_MALLOC_H 1
+#endif
+
+#define ROOT_SYSCONFDIR "/etc"
+
+#define ENABLE_LIBSPARSE 1
+
+#define DISABLE_BACKTRACE 1
+#define HAVE_DIRENT_H 1
+#define HAVE_ERRNO_H 1
+#define HAVE_GETOPT_H 1
+#define HAVE_GETPWUID_R 1
+#define HAVE_INTPTR_T 1
+#define HAVE_INTTYPES_H 1
+#ifdef __linux__
+#define HAVE_LSEEK64 1
+#define HAVE_LSEEK64_PROTOTYPE 1
+#endif
+#define HAVE_MMAP 1
+#ifdef __linux__
+#define HAVE_MNTENT_H 1
+#endif
+#define HAVE_SETJMP_H 1
+#ifdef __linux__
+#define HAVE_SETMNTENT 1
+#endif
+#define HAVE_SNPRINTF 1
+#define HAVE_STDLIB_H 1
+#define HAVE_STRCASECMP 1
+#define HAVE_STRDUP 1
+#define HAVE_STRINGS_H 1
+#define HAVE_STRNLEN 1
+#define HAVE_STRPTIME 1
+#define HAVE_SYSCONF 1
+#define HAVE_TYPE_SSIZE_T 1
+#define HAVE_UNISTD_H 1
+#define HAVE_UTIME_H 1
+
+#define HAVE_SYS_STAT_H 1
+#define HAVE_SYS_TIME_H 1
+#define HAVE_SYS_TYPES_H 1
+
+#if defined(_WIN32)
+# define HAVE_LINUX_TYPES_H 1
+# define HAVE_WINSOCK_H 1
+# define HAVE_SYS_SYSMACROS_H 1
+#endif
+#if defined(__APPLE__) || defined(__linux__)
+# define HAVE_FCNTL 1
+# define HAVE_FSYNC 1
+# define HAVE_GETPAGESIZE 1
+# define HAVE_NET_IF_H 1
+# define HAVE_NETINET_IN_H 1
+# define HAVE_PREAD 1
+# define HAVE_PWRITE 1
+# define HAVE_POSIX_MEMALIGN 1
+# define HAVE_SYS_IOCTL_H 1
+# define HAVE_SYS_MMAN_H 1
+# define HAVE_SYS_MOUNT_H 1
+# define HAVE_SYS_PARAM_H 1
+# define HAVE_SYS_RESOURCE_H 1
+# define HAVE_SYS_SELECT_H 1
+# define HAVE_SYS_WAIT_H 1
+#endif
+#if defined(__linux__)
+# define HAVE_EXT2_IOCTLS 1
+# define HAVE_FALLOCATE 1
+# define HAVE_LINUX_FD_H 1
+# define HAVE_LINUX_TYPES_H 1
+# define HAVE_LSEEK64 1
+# define HAVE_LSEEK64_PROTOTYPE 1
+# define HAVE_PREAD64 1
+# define HAVE_PWRITE64 1
+# define HAVE_SYS_PRCTL_H 1
+# define HAVE_SYS_SYSMACROS_H 1
+#endif
"-Wno-macro-redefined",
],
+ target: {
+ windows: {
+ include_dirs: [ "external/e2fsprogs/include/mingw" ],
+ enabled: true
+ },
+ },
+
header_libs: ["libext2-headers"],
export_include_dirs: ["."],
export_header_lib_headers: ["libext2-headers"],
#include <unistd.h>
#endif
#include <fcntl.h>
+#if HAVE_SYS_IOCTL_H
#include <sys/ioctl.h>
+#endif
#include "e2p.h"
#include <unistd.h>
#endif
#include <fcntl.h>
+#if HAVE_SYS_IOCTL_H
#include <sys/ioctl.h>
+#endif
#include "e2p.h"
#if HAVE_ERRNO_H
#include <errno.h>
#endif
+#if HAVE_SYS_IOCTL_H
#include <sys/ioctl.h>
+#endif
#include "e2p.h"
#if HAVE_ERRNO_H
#include <errno.h>
#endif
+#if HAVE_SYS_IOCTL_H
#include <sys/ioctl.h>
+#endif
#include "e2p.h"
],
},
windows: {
- // include/nonunix is used as an overlay on top of the system
- // include directory. Some empty header files in include/nonunix
- // hide the ones in the system include path. This setup doesn't work
- // unless we pass the include/nonunix as an -isystem flag.
- // TODO(deymo): Enable windows
- enabled: false,
+ enabled: true,
+ include_dirs: [ "external/e2fsprogs/include/mingw" ],
cflags: [
"-Wno-format",
- // "-isystem external/e2fsprogs/include/nonunix",
],
host_ldlibs: ["-lws2_32"],
},
],
shared_libs: [
"libext2fs",
- "libext2_com_err",
"libext2_blkid",
],
+ target: {
+ windows: {
+ enabled: true
+ },
+ },
+
cflags: [
"-W",
"-Wall",
"-Wno-unused-function",
"-Wno-unused-parameter",
],
-
+ target: {
+ windows: {
+ include_dirs: [ "external/e2fsprogs/include/mingw" ],
+ enabled: true
+ },
+ },
header_libs: ["libext2-headers"],
export_include_dirs: ["."],
export_header_lib_headers: ["libext2-headers"],
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
+#ifdef HAVE_SYS_WAIT_H
#include <sys/wait.h>
+#endif
#include <sys/stat.h>
#ifdef HAVE_SYS_FILE_H
#include <sys/file.h>
#endif
#ifdef _WIN32
+#ifndef USE_MINGW
static void gettimeofday (struct timeval *tv, void *dummy)
{
FILETIME ftime;
tv->tv_sec = n / 1000000;
tv->tv_usec = n % 1000000;
}
-
-static int getuid (void)
-{
- return 1;
-}
+#endif
#endif
static int get_random_fd(void)
THREAD_LOCAL FILE *state_f;
THREAD_LOCAL uint16_t clock_seq;
struct timeval tv;
+#ifndef _WIN32
struct flock fl;
+#endif
uint64_t clock_reg;
mode_t save_umask;
int len;
}
}
}
+#ifndef _WIN32
fl.l_type = F_WRLCK;
fl.l_whence = SEEK_SET;
fl.l_start = 0;
break;
}
}
+#endif
if (state_fd >= 0) {
unsigned int cl;
unsigned long tv1, tv2;
fflush(state_f);
}
rewind(state_f);
+#ifndef _WIN32
fl.l_type = F_UNLCK;
if (fcntl(state_fd, F_SETLK, &fl) < 0) {
fclose(state_f);
state_fd = -1;
}
+#endif
}
*clock_high = clock_reg >> 32;
name: "libext2_misc",
host_supported: true,
+ target: {
+ windows: {
+ include_dirs: [ "external/e2fsprogs/include/mingw" ],
+ enabled: true
+ },
+ },
+
srcs: [
"create_inode.c",
],
- cflags: ["-W", "-Wall", "-Wno-macro-redefined"],
+ cflags: ["-W", "-Wall"],
shared_libs: [
"libext2_quota",
"libext2fs",
"libz",
],
},
+ windows: {
+ include_dirs: [ "external/e2fsprogs/include/mingw" ],
+ cflags: ["-D_POSIX", "-D__USE_MINGW_ALARM"],
+ ldflags: ["-static"],
+ host_ldlibs: ["-lws2_32"],
+ enabled: true
+ },
android: {
shared_libs: [
"libext2fs",
#include "config.h"
#include <time.h>
+#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
#include <limits.h> /* for PATH_MAX */
#elif defined HAVE_ATTR_XATTR_H
#include <attr/xattr.h>
#endif
+#ifdef HAVE_SYS_IOCTL_H
#include <sys/ioctl.h>
+#endif
#ifdef HAVE_SYS_SYSMACROS_H
#include <sys/sysmacros.h>
#endif
}
#endif /* HAVE_LLISTXATTR */
+#ifndef _WIN32
/* Make a special files (block and character devices), fifo's, and sockets */
errcode_t do_mknod_internal(ext2_filsys fs, ext2_ino_t cwd, const char *name,
struct stat *st)
mode = LINUX_S_IFIFO;
filetype = EXT2_FT_FIFO;
break;
+#ifndef _WIN32
case S_IFSOCK:
mode = LINUX_S_IFSOCK;
filetype = EXT2_FT_SOCK;
break;
+#endif
default:
return EXT2_ET_INVALID_ARGUMENT;
}
return retval;
}
+#endif
/* Make a symlink name -> target */
errcode_t do_symlink_internal(ext2_filsys fs, ext2_ino_t cwd, const char *name,
case S_IFCHR:
case S_IFBLK:
case S_IFIFO:
+#ifndef _WIN32
case S_IFSOCK:
retval = do_mknod_internal(fs, parent_ino, name, &st);
if (retval) {
goto out;
}
break;
+#endif
case S_IFREG:
retval = do_write_internal(fs, parent_ino, name, name,
root);
#ifdef HAVE_ERRNO_H
#include <errno.h>
#endif
+#ifdef HAVE_SYS_IOCTL_H
#include <sys/ioctl.h>
+#endif
#include <sys/types.h>
#include <sys/stat.h>
#ifdef HAVE_SYS_SYSMACROS_H
#ifdef HAVE_ERRNO_H
#include <errno.h>
#endif
+#ifdef HAVE_SYS_IOCTL_H
#include <sys/ioctl.h>
+#endif
#include <libgen.h>
#include <limits.h>
#include <blkid/blkid.h>
dev_size = fs_blocks_count;
retval = 0;
} else
+#ifndef _WIN32
retval = ext2fs_get_device_size2(device_name,
EXT2_BLOCK_SIZE(&fs_param),
&dev_size);
-
+#else
+ retval = ext2fs_get_device_size(device_name,
+ EXT2_BLOCK_SIZE(&fs_param),
+ &dev_size);
+#endif
if (retval && (retval != EXT2_ET_UNIMPLEMENTED)) {
com_err(program_name, retval, "%s",
_("while trying to determine filesystem size"));