--- /dev/null
+diff -ur sfdisk_vanilla/sfdisk.c sfdisk_llseek-fix/sfdisk.c
+--- sfdisk_vanilla/sfdisk.c 2004-01-13 13:03:11.000000000 +0000
++++ sfdisk_llseek-fix/sfdisk.c 2008-04-17 08:42:35.000000000 +0000
+@@ -134,9 +137,17 @@
+ * Note: we use 512-byte sectors here, irrespective of the hardware ss.
+ */
+ #if defined(__linux__) && !defined (__alpha__) && !defined (__ia64__) && !defined (__x86_64__) && !defined (__s390x__)
++#if defined(_llseek)
+ static
+ _syscall5(int, _llseek, unsigned int, fd, ulong, hi, ulong, lo,
+ loff_t *, res, unsigned int, wh);
++#else
++static int _llseek (unsigned int fd, unsigned long oh,
++ unsigned long ol, long long *result,
++ unsigned int origin) {
++ return syscall (__NR__llseek, fd, oh, ol, result, origin);
++#endif
++}
+ #endif
+
+ static int
--- /dev/null
+diff -ru sfdisk_llseek-fix/sfdisk.c sfdisk_index-rindex-fix/sfdisk.c
+--- sfdisk_llseek-fix/sfdisk.c 2008-04-17 08:42:35.000000000 +0000
++++ sfdisk_index-rindex-fix/sfdisk.c 2008-04-17 09:50:17.000000000 +0000
+@@ -58,6 +58,17 @@
+
+ #define SIZE(a) (sizeof(a)/sizeof(a[0]))
+
++/*
++ * Why these wouldn't be defined in string.h, I don't know, there is a block
++ * testing for BSD, and no other mention of these functions ... NK
++ */
++#if !defined(index)
++# define index(s,c) strchr((s), (c))
++#endif
++#if !defined(rindex)
++# define rindex(s,c) strrchr((s), (c))
++#endif
++
+ /*
+ * Table of contents:
+ * A. About seeking