diff -Nurp nautilus-2.4.2/cut-n-paste-code/libegg/egg-recent-model.c nautilus-2.4.2-cygwin/cut-n-paste-code/libegg/egg-recent-model.c --- nautilus-2.4.2/cut-n-paste-code/libegg/egg-recent-model.c 2003-04-16 18:39:08.000000000 +0800 +++ nautilus-2.4.2-cygwin/cut-n-paste-code/libegg/egg-recent-model.c 2004-05-07 01:48:10.000000000 +0800 @@ -871,26 +871,70 @@ egg_recent_model_open_file (EggRecentMod return file; } +#ifdef __CYGWIN__ +/* + * Modify from Steven O'Brien (http://homepage.ntlworld.com/steven.obrien2/)'s + * cygextras-0.3.4 package. + */ +#define WIN32_LEAN_AND_MEAN +#include + +static int +check_is_nt() +{ + return (GetVersion() < 0x80000000); +} +#endif + static gboolean egg_recent_model_lock_file (FILE *file) { int fd; - +#ifdef __CYGWIN__ + struct flock lock; +#endif rewind (file); fd = fileno (file); +#ifndef __CYGWIN__ return lockf (fd, F_LOCK, 0) == 0 ? TRUE : FALSE; +#else + if (check_is_nt()) { + lock.l_type = F_RDLCK; + lock.l_start = 0; + lock.l_whence = SEEK_SET; + lock.l_len = 0; + + return fcntl (fd, F_SETLK, &lock) >= 0 ? TRUE : FALSE; + } else + return TRUE; +#endif } static gboolean egg_recent_model_unlock_file (FILE *file) { int fd; +#ifdef __CYGWIN__ + struct flock lock; +#endif rewind (file); fd = fileno (file); +#ifndef __CYGWIN__ return lockf (fd, F_ULOCK, 0) < 0 ? FALSE : TRUE; +#else + if (check_is_nt()) { + lock.l_type = F_UNLCK; + lock.l_start = 0; + lock.l_whence = SEEK_SET; + lock.l_len = 0; + + return fcntl (fd, F_SETLK, &lock) < 0 ? FALSE : TRUE; + } else + return TRUE; +#endif } static void diff -Nurp nautilus-2.4.2/libnautilus/Makefile.in nautilus-2.4.2-cygwin/libnautilus/Makefile.in --- nautilus-2.4.2/libnautilus/Makefile.in 2004-02-03 08:50:42.000000000 +0800 +++ nautilus-2.4.2-cygwin/libnautilus/Makefile.in 2004-05-07 01:49:06.000000000 +0800 @@ -270,7 +270,7 @@ X_CFLAGS = @X_CFLAGS@ X_LIBS = @X_LIBS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ -libnautilus_la_LIBADD = +libnautilus_la_LIBADD = $(LIBNAUTILUS_LIBS) libnautilus_la_OBJECTS = nautilus-view-component-stubs.lo \ nautilus-view-component-skels.lo nautilus-view-component-common.lo \ nautilus-distributed-undo-stubs.lo nautilus-distributed-undo-skels.lo \ diff -Nurp nautilus-2.4.2/libnautilus-private/nautilus-volume-monitor.c nautilus-2.4.2-cygwin/libnautilus-private/nautilus-volume-monitor.c --- nautilus-2.4.2/libnautilus-private/nautilus-volume-monitor.c 1997-01-04 11:26:44.000000000 +0800 +++ nautilus-2.4.2-cygwin/libnautilus-private/nautilus-volume-monitor.c 2004-05-07 01:49:30.000000000 +0800 @@ -1313,14 +1313,18 @@ get_mount_list (NautilusVolumeMonitor *m return volumes; } -#elif defined(SOLARIS_MNT) +#elif defined(SOLARIS_MNT) || defined(__CYGWIN__) static GList * get_mount_list (NautilusVolumeMonitor *monitor) { FILE *fh; GList *volumes; +#ifndef __CYGWIN__ MountTableEntry ent; +#else + struct mntent ent_storage, *ent; +#endif NautilusVolume *volume; volumes = NULL; @@ -1330,12 +1334,23 @@ get_mount_list (NautilusVolumeMonitor *m return NULL; } + #ifndef __CYGWIN__ while (! getmntent(fh, &ent)) { volume = create_volume (ent.mnt_special, ent.mnt_mountp); volume->is_removable = has_removable_mntent_options (&ent); volumes = finish_creating_volume_and_prepend (monitor, volume, ent.mnt_fstype, volumes); } + #else /* __CYGWIN__ */ + ent = &ent_storage; + while ((ent=getmntent(fh)) != NULL) { + volume = create_volume (ent->mnt_fsname, ent->mnt_dir); + volume->is_removable = FALSE; /* is it always? */ + volumes = finish_creating_volume_and_prepend + (monitor, volume, ent->mnt_type, volumes); + } + #endif + endmntent (fh); diff -Nurp nautilus-2.4.2/src/file-manager/fm-icon-view.c nautilus-2.4.2-cygwin/src/file-manager/fm-icon-view.c --- nautilus-2.4.2/src/file-manager/fm-icon-view.c 2003-07-21 08:01:06.000000000 +0800 +++ nautilus-2.4.2-cygwin/src/file-manager/fm-icon-view.c 2004-05-07 01:52:52.000000000 +0800 @@ -71,7 +71,12 @@ #include #include #include +#ifdef __CYGWIN__ +#define X_LOCALE +#include +#else #include +#endif #include #include #include diff -Nurp nautilus-2.4.2/src/nautilus-server-connect.c nautilus-2.4.2-cygwin/src/nautilus-server-connect.c --- nautilus-2.4.2/src/nautilus-server-connect.c 2003-06-08 13:09:38.000000000 +0800 +++ nautilus-2.4.2-cygwin/src/nautilus-server-connect.c 2004-05-07 01:50:06.000000000 +0800 @@ -19,7 +19,12 @@ #include #include #include +#ifdef __CYGWIN__ +#define X_LOCALE +#include +#else #include +#endif #include #include #include diff -Nurp nautilus-2.4.2/src/nautilus-window-menus.c nautilus-2.4.2-cygwin/src/nautilus-window-menus.c --- nautilus-2.4.2/src/nautilus-window-menus.c 2003-06-08 13:09:38.000000000 +0800 +++ nautilus-2.4.2-cygwin/src/nautilus-window-menus.c 2004-05-07 01:50:22.000000000 +0800 @@ -27,7 +27,12 @@ */ #include +#ifdef __CYGWIN__ +#define X_LOCALE +#include +#else #include +#endif #include "nautilus-application.h" #include "nautilus-bookmark-list.h"