diff --git a/fish-1.23.0-ARG_MAX.patch b/fish-1.23.0-ARG_MAX.patch
new file mode 100644
index 0000000..ffe48ae
--- /dev/null
+++ b/fish-1.23.0-ARG_MAX.patch
@@ -0,0 +1,18 @@
+diff -up fish-1.23.0/exec.c.BAD fish-1.23.0/exec.c
+--- fish-1.23.0/exec.c.BAD	2008-09-15 16:28:52.000000000 -0400
++++ fish-1.23.0/exec.c	2008-09-15 16:29:56.000000000 -0400
+@@ -24,6 +24,14 @@
+ #include <dirent.h>
+ #include <time.h>
+ 
++#if defined(_SC_ARG_MAX)
++# if defined(ARG_MAX)
++#  undef ARG_MAX
++# endif
++# define ARG_MAX sysconf (_SC_ARG_MAX)
++#endif
++
++
+ #ifdef HAVE_SIGINFO_H
+ #include <siginfo.h>
+ #endif
diff --git a/fish.spec b/fish.spec
index a978368..3b43cba 100644
--- a/fish.spec
+++ b/fish.spec
@@ -1,77 +1,35 @@
 Summary:                A friendly interactive shell
 Name:                   fish
-
 Version:                1.23.0
-Release:                5%{?dist}
-
+Release:                6%{?dist}
 License:                GPLv2
 Group:                  System Environment/Shells
 URL:                    http://fishshell.org/
-
 Source0:                http://roo.no-ip.org/%{name}/files/%{version}/%{name}-%{version}.tar.bz2
-
+# Emailed to upstream
+Patch0:                 fish-1.23.0-ARG_MAX.patch
 BuildRoot:              %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 BuildRequires:          ncurses-devel gettext groff doxygen
 BuildRequires:          autoconf
-
-
-# Locate correct build time-dependencies for providing X headers
-%if 0%{?fedora} >= 5
-
-# Modern Fedora version, has modular X.org
 BuildRequires:          xorg-x11-proto-devel libX11-devel libXt-devel libXext-devel
 
-%endif
-
-%if 0%{?fedora} < 5
-%if 0%{?fedora} >= 3
-
-# Semi-old Fedora version, has non-modular X.org
-BuildRequires:          xorg-x11-devel
-
-%endif
-%endif
-
-%if 0%{?fedora}
-%if 0%{?fedora} < 3
-
-# Ancient Fedora version, has XFree86
-BuildRequires:          XFree86-devel
-
-%endif
-%else
-
-# The %fedora variable has not been correctly defined, or this is is
-# not a Fedora system, try guessing BuildRequires by looking at the
-# directory structure
-%define xinclude /usr%(if [ -d /usr/X11R6/include ]; then echo /X11R6; fi)/include
-BuildRequires:          %{xinclude}/X11/StringDefs.h, %{xinclude}/X11/Xlib.h
-BuildRequires:          %{xinclude}/X11/Intrinsic.h,  %{xinclude}/X11/Xatom.h
-
-%endif
-
-
 %description 
-
 fish is a shell geared towards interactive use. Its features are 
 focused on user friendliness and discoverability. The language syntax 
 is simple but incompatible with other shell languages.
 
-
 %prep
 %setup -q
-
+%patch0 -p1 -b .ARG_MAX
 
 %build
-# The docdir argument is to make the name of the cosumantation
+# The docdir argument is to make the name of the documentation
 # directory 'fish-VERSION', instead of the default, which is simply
 # 'fish'.
-%configure docdir=%_datadir/doc/%{name}-%{version}
+%configure docdir=%{_datadir}/doc/%{name}-%{version}
 make %{?_smp_mflags}
 
 
-
-
 %install
 rm -rf $RPM_BUILD_ROOT
 make install DESTDIR="$RPM_BUILD_ROOT" 
@@ -80,100 +38,71 @@ make install DESTDIR="$RPM_BUILD_ROOT"
 %find_lang %{name}.\*
 
 # In case...
-mv $RPM_BUILD_ROOT%_datadir/fish/man/*.1 $RPM_BUILD_ROOT%_mandir/man1/
-
+mv $RPM_BUILD_ROOT%{_datadir}/fish/man/*.1 $RPM_BUILD_ROOT%{_mandir}/man1/
 
 %clean
 rm -rf $RPM_BUILD_ROOT
 
-
-
-
 %post
 # Add fish to the list of allowed shells in /etc/shells
-if ! grep %_bindir/fish %_sysconfdir/shells >/dev/null; then
-	echo %_bindir/fish >>%_sysconfdir/shells
+if ! grep %{_bindir}/fish %{_sysconfdir}/shells >/dev/null; then
+        echo %{_bindir}/fish >>%{_sysconfdir}/shells
 fi
 
-
-
-
 %postun
 # Remove fish from the list of allowed shells in /etc/shells
 if [ "$1" = 0 ]; then
-	grep -v %_bindir/fish %_sysconfdir/shells >%_sysconfdir/fish.tmp
-	mv %_sysconfdir/fish.tmp %_sysconfdir/shells
+        grep -v %{_bindir}/fish %{_sysconfdir}/shells >%{_sysconfdir}/fish.tmp
+        mv %{_sysconfdir}/fish.tmp %{_sysconfdir}/shells
 fi
 
-
-
-
 %files -f %{name}.\*.lang
 
 %defattr(-,root,root,-)
-
-# The documentation directory
-%doc %_datadir/doc/%{name}-%{version}
-
-# man files
-%_mandir/man1/*.1*
-%exclude %_mandir/man1/count*
-%exclude %_mandir/man1/alias*
-%exclude %_mandir/man1/bg*
-%exclude %_mandir/man1/bind*
-%exclude %_mandir/man1/break*
-%exclude %_mandir/man1/builtin*
-%exclude %_mandir/man1/cd*
-%exclude %_mandir/man1/command*
-%exclude %_mandir/man1/complete*
-%exclude %_mandir/man1/continue*
-%exclude %_mandir/man1/dirs*
-%exclude %_mandir/man1/eval*
-%exclude %_mandir/man1/exec*
-%exclude %_mandir/man1/exit*
-%exclude %_mandir/man1/fg*
-%exclude %_mandir/man1/help*
-%exclude %_mandir/man1/jobs*
-%exclude %_mandir/man1/popd*
-%exclude %_mandir/man1/pushd*
-%exclude %_mandir/man1/read*
-%exclude %_mandir/man1/return*
-%exclude %_mandir/man1/set*
-%exclude %_mandir/man1/source*
-%exclude %_mandir/man1/trap*
-%exclude %_mandir/man1/type*
-%exclude %_mandir/man1/ulimit*
-%exclude %_mandir/man1/umask*
-
-# The program binaries
-%attr(0755,root,root) %_bindir/fish
-%attr(0755,root,root) %_bindir/fishd
-%attr(0755,root,root) %_bindir/fish_pager
-%attr(0755,root,root) %_bindir/fish_indent
-%attr(0755,root,root) %_bindir/xsel
-%attr(0755,root,root) %_bindir/set_color
-%attr(0755,root,root) %_bindir/mimedb
-
-# Configuration files
-%config %_sysconfdir/fish
-#%config %_sysconfdir/fish_inputrc
-#%dir %_sysconfdir/fish.d
-#%config %_sysconfdir/fish.d/fish_*.fish
-
-# Non-configuration initialization files
-%dir %_datadir/fish
-%_datadir/fish/config*.fish
-
-# Program specific tab-completions
-%dir %_datadir/fish/completions
-%_datadir/fish/completions/*.fish
-
-# Dynamically loaded shellscript functions
-%dir %_datadir/fish/functions
-%_datadir/fish/functions/*.fish
-
+%doc %{_datadir}/doc/%{name}-%{version}
+%{_mandir}/man1/*.1*
+%exclude %{_mandir}/man1/count*
+%exclude %{_mandir}/man1/alias*
+%exclude %{_mandir}/man1/bg*
+%exclude %{_mandir}/man1/bind*
+%exclude %{_mandir}/man1/break*
+%exclude %{_mandir}/man1/builtin*
+%exclude %{_mandir}/man1/cd*
+%exclude %{_mandir}/man1/command*
+%exclude %{_mandir}/man1/complete*
+%exclude %{_mandir}/man1/continue*
+%exclude %{_mandir}/man1/dirs*
+%exclude %{_mandir}/man1/eval*
+%exclude %{_mandir}/man1/exec*
+%exclude %{_mandir}/man1/exit*
+%exclude %{_mandir}/man1/fg*
+%exclude %{_mandir}/man1/help*
+%exclude %{_mandir}/man1/jobs*
+%exclude %{_mandir}/man1/popd*
+%exclude %{_mandir}/man1/pushd*
+%exclude %{_mandir}/man1/read*
+%exclude %{_mandir}/man1/return*
+%exclude %{_mandir}/man1/set*
+%exclude %{_mandir}/man1/source*
+%exclude %{_mandir}/man1/trap*
+%exclude %{_mandir}/man1/type*
+%exclude %{_mandir}/man1/ulimit*
+%exclude %{_mandir}/man1/umask*
+%attr(0755,root,root) %{_bindir}/fish
+%attr(0755,root,root) %{_bindir}/fishd
+%attr(0755,root,root) %{_bindir}/fish_pager
+%attr(0755,root,root) %{_bindir}/fish_indent
+%attr(0755,root,root) %{_bindir}/xsel
+%attr(0755,root,root) %{_bindir}/set_color
+%attr(0755,root,root) %{_bindir}/mimedb
+%config(noreplace) %{_sysconfdir}/fish
+%{_datadir}/fish/
 
 %changelog
+* Mon Sep 15 2008 Tom "spot" Callaway <tcallawa@redhat.com> - 1.23.0-6
+- cleanups
+- define ARG_MAX properly so it compiles
+
 * Mon Jul 07 2008 Tom "spot" Callaway <tcallawa@redhat.com> - 1.23.0-5
 - fix conditional comparison