diff --git a/fish-1.14.0-wutil.patch b/fish-1.14.0-wutil.patch
deleted file mode 100644
index 45289a4..0000000
--- a/fish-1.14.0-wutil.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -Nur fish-1.14.0-orig/wutil.h fish-1.14.0/wutil.h
---- fish-1.14.0-orig/wutil.h	2005-09-24 22:31:33.000000000 +0200
-+++ fish-1.14.0/wutil.h	2006-03-10 11:19:08.000000000 +0100
-@@ -11,6 +11,7 @@
- #include <dirent.h>
- #include <sys/stat.h>
- #include <unistd.h>
-+#include "config.h"
- 
- 
- /**
diff --git a/fish-1.21.2-fallback.patch b/fish-1.21.2-fallback.patch
deleted file mode 100644
index a51d6e7..0000000
--- a/fish-1.21.2-fallback.patch
+++ /dev/null
@@ -1,133 +0,0 @@
-diff -Nur fish-1.21.2-orig/fallback.h fish-1.21.2/fallback.h
---- fish-1.21.2-orig/fallback.h	2006-03-09 13:01:19.000000000 +0100
-+++ fish-1.21.2/fallback.h	2006-03-10 17:03:15.000000000 +0100
-@@ -31,7 +31,7 @@
-    strings and decimal numbers, position (%n), field width and
-    precision.
- */
--int fwprintf( FILE *f, const wchar_t *format, ... );
-+
- 
- 
- /**
-@@ -41,7 +41,7 @@
-    strings and decimal numbers, position (%n), field width and
-    precision.
- */
--int swprintf( wchar_t *str, size_t l, const wchar_t *format, ... );
-+
- 
- /**
-    Print formated string. Some operating systems (Like NetBSD) do not
-@@ -50,7 +50,7 @@
-    strings and decimal numbers, position (%n), field width and
-    precision.
- */
--int wprintf( const wchar_t *format, ... );
-+
- 
- /**
-    Print formated string. Some operating systems (Like NetBSD) do not
-@@ -59,7 +59,7 @@
-    strings and decimal numbers, position (%n), field width and
-    precision.
- */
--int vwprintf( const wchar_t *filter, va_list va );
-+
- 
- /**
-    Print formated string. Some operating systems (Like NetBSD) do not
-@@ -68,7 +68,7 @@
-    strings and decimal numbers, position (%n), field width and
-    precision.
- */
--int vfwprintf( FILE *f, const wchar_t *filter, va_list va );
-+
- 
- /**
-    Print formated string. Some operating systems (Like NetBSD) do not
-@@ -77,31 +77,31 @@
-    strings and decimal numbers, position (%n), field width and
-    precision.
- */
--int vswprintf( wchar_t *out, size_t n, const wchar_t *filter, va_list va );
-+
- 
- /**
-    Fallback implementation of fgetwc
- */
--wint_t fgetwc(FILE *stream);
-+
- 
- /**
-    Fallback implementation of getwc
- */
--wint_t getwc(FILE *stream);
-+
- 
- /**
-    Fallback implementation of fputwc
- */
--wint_t fputwc(wchar_t wc, FILE *stream);
-+
- /**
-    Fallback implementation of putwc
- */
--wint_t putwc(wchar_t wc, FILE *stream);
-+
- 
- /**
-    Fallback implementation of wcstok. Uses code borrowed from glibc.
- */
--wchar_t *wcstok(wchar_t *wcs, const wchar_t *delim, wchar_t **ptr);
-+
- 
- 
- /**
-@@ -115,15 +115,15 @@
-    real wcwidth. Therefore, the fallback wcwidth assumes any printing
-    character takes up one column and anything else uses 0 columns.
- */
--int wcwidth( wchar_t c );
-+
- 
- /**
-    Create a duplicate string. Wide string version of strdup. Will
-    automatically exit if out of memory.
- */
--wchar_t *wcsdup(const wchar_t *in);
- 
--size_t wcslen(const wchar_t *in);
-+
-+
- 
- /**
-    Case insensitive string compare function. Wide string version of
-@@ -136,7 +136,7 @@
-    fish and guaranteed to be a sane, english word. Using wcscasecmp on
-    a user-supplied string should be considered a bug.
- */
--int wcscasecmp( const wchar_t *a, const wchar_t *b );
-+
- 
- /**
-    Case insensitive string compare function. Wide string version of
-@@ -149,7 +149,7 @@
-    fish and guaranteed to be a sane, english word. Using wcsncasecmp on
-    a user-supplied string should be considered a bug.
- */
--int wcsncasecmp( const wchar_t *a, const wchar_t *b, int count );
-+
- 
- /**
-    Returns a newly allocated wide character string wich is a copy of
-@@ -173,9 +173,6 @@
-    to represent numbers higher than 9. Higher bases than 36 are not
-    supported.
- */
--long wcstol(const wchar_t *nptr,
--			wchar_t **endptr,
--			int base);
- 
- 
- 
diff --git a/fish-1.22.3-openfix.patch b/fish-1.22.3-openfix.patch
new file mode 100644
index 0000000..9b64682
--- /dev/null
+++ b/fish-1.22.3-openfix.patch
@@ -0,0 +1,11 @@
+--- fish-1.22.3/common.c.openfix	2007-08-16 10:56:06.000000000 +0200
++++ fish-1.22.3/common.c	2007-08-16 10:55:55.000000000 +0200
+@@ -1483,7 +1483,7 @@ int acquire_lock_file( const char *lockf
+ 		goto done;
+ 	}
+ 	(void)unlink( linkfile );
+-	if( ( fd = open( linkfile, O_CREAT|O_RDONLY ) ) == -1 )
++	if( ( fd = (open)( linkfile, O_CREAT|O_RDONLY ) ) == -1 )
+ 	{
+ 		debug( 1, L"acquire_lock_file: open: %s", strerror( errno ) );
+ 		goto done;
diff --git a/fish.spec b/fish.spec
index 01db4d7..5c2dc34 100644
--- a/fish.spec
+++ b/fish.spec
@@ -2,13 +2,14 @@ Summary:                A friendly interactive shell
 Name:                   fish
 
 Version:                1.22.3
-Release:                2%{?dist}
+Release:                3%{?dist}
 
 License:                GPL
 Group:                  System Environment/Shells
 URL:                    http://roo.no-ip.org/fish/
 
 Source0:                http://roo.no-ip.org/%{name}/files/%{version}/%{name}-%{version}.tar.bz2
+Patch0:			fish-1.22.3-openfix.patch
 
 BuildRoot:              %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 BuildRequires:          ncurses-devel gettext groff doxygen
@@ -60,6 +61,7 @@ is simple but incompatible with other shell languages.
 
 %prep
 %setup -q
+%patch0 -p1 -b .openfix
 
 
 
@@ -149,6 +151,10 @@ fi
 
 
 %changelog
+* Thu Aug 16 2007 Oliver Falk <oliver@linux-kernel.at>	- 1.22.3-3
+- Workaround glibc's open check
+- Problem reported upstream; Should be fixed there
+
 * Tue Aug 07 2007 Oliver Falk <oliver@linux-kernel.at>	- 1.22.3-2
 - Fix BR autoconf