-diff -ur device-mapper.1.02.05.org/configure.in device-mapper.1.02.05/configure.in
---- device-mapper.1.02.05.org/configure.in 2006-04-22 20:30:55.242324000 +0200
-+++ device-mapper.1.02.05/configure.in 2006-04-22 20:31:08.979182500 +0200
-@@ -66,7 +66,7 @@
+--- device-mapper.1.02.09.orig/configure.in 2006-09-27 18:22:22.000000000 +0000
++++ device-mapper.1.02.09.klibc/configure.in 2006-09-27 18:22:22.000000000 +0000
+@@ -69,7 +69,7 @@
AC_HEADER_STDC
AC_HEADER_TIME
AC_CHECK_HEADERS(termios.h)
################################################################################
-diff -ur device-mapper.1.02.05.org/dmsetup/dmsetup.c device-mapper.1.02.05/dmsetup/dmsetup.c
---- device-mapper.1.02.05.org/dmsetup/dmsetup.c 2006-04-06 18:20:40.000000000 +0200
-+++ device-mapper.1.02.05/dmsetup/dmsetup.c 2006-04-22 20:31:08.995183500 +0200
-@@ -29,7 +29,6 @@
+--- device-mapper.1.02.09.orig/dmsetup/dmsetup.c 2006-08-10 20:53:21.000000000 +0000
++++ device-mapper.1.02.09.klibc/dmsetup/dmsetup.c 2006-09-27 18:22:58.000000000 +0000
+@@ -31,12 +31,13 @@
#include <dirent.h>
#include <errno.h>
#include <unistd.h>
#include <sys/wait.h>
#include <unistd.h>
#include <sys/param.h>
-@@ -1496,7 +1495,9 @@
++#ifndef __KLIBC__
+ #include <locale.h>
+ #include <langinfo.h>
++#endif
+
+ #ifdef HAVE_SYS_IOCTL_H
+ # include <sys/ioctl.h>
+@@ -1547,9 +1548,11 @@
+ int len;
+
+ /* Symbol set default */
++#ifndef __KLIBC__
+ if (!strcmp(nl_langinfo(CODESET), "UTF-8"))
+ _tsym = &_tsym_utf;
+ else
++#endif
+ _tsym = &_tsym_ascii;
+
+ /* Default */
+@@ -1647,7 +1650,9 @@
memset(&_values, 0, sizeof(_values));
namebase = strdup((*argv)[0]);
if (!strcmp(base, "devmap_name")) {
free(namebase);
-diff -ur device-mapper.1.02.05.org/lib/ioctl/libdm-iface.c device-mapper.1.02.05/lib/ioctl/libdm-iface.c
---- device-mapper.1.02.05.org/lib/ioctl/libdm-iface.c 2006-04-03 17:56:02.000000000 +0200
-+++ device-mapper.1.02.05/lib/ioctl/libdm-iface.c 2006-04-22 20:33:35.020309500 +0200
-@@ -135,17 +135,25 @@
+@@ -1783,7 +1788,9 @@
+ struct command *c;
+ int r = 1;
+
++#ifndef __KLIBC__
+ (void) setlocale(LC_ALL, "");
++#endif
+
+ if (!_process_switches(&argc, &argv)) {
+ fprintf(stderr, "Couldn't process command line.\n");
+--- device-mapper.1.02.22/lib/ioctl/libdm-iface.c.orig 2007-08-21 18:26:07.000000000 +0200
++++ device-mapper.1.02.22/lib/ioctl/libdm-iface.c 2007-09-09 23:59:33.337996036 +0200
+@@ -134,17 +134,25 @@
uint32_t *number)
{
FILE *fl;
+ uint32_t num, size;
if (!(fl = fopen(file, "r"))) {
- log_error("%s: fopen failed: %s", file, strerror(errno));
+ log_sys_error("fopen", file);
return 0;
}
+ size++;
+ } while (num > 0 && buf[size - 1] != '\n');
+ buf[size] = '\0';
-+ if (sscanf(buf, "%d %255s\n", number, &nm[0]) == 2) {
++ if (sscanf(buf, "%d %255s\n", &num, &nm[0]) == 2) {
if (!strcmp(name, nm)) {
if (number) {
*number = num;
-@@ -154,10 +162,8 @@
+@@ -154,10 +162,9 @@
}
dm_bit_set(_dm_bitset, num);
}
- c = fgetc(fl);
- } while (c != EOF && c != '\n');
- }
-+ }
-+ } while (num > 0);
- fclose(fl);
-
- if (number) {
-diff -ur device-mapper.1.02.05.org/lib/libdm-file.c device-mapper.1.02.05/lib/libdm-file.c
---- device-mapper.1.02.05.org/lib/libdm-file.c 2006-01-31 15:50:37.000000000 +0100
-+++ device-mapper.1.02.05/lib/libdm-file.c 2006-04-22 20:34:08.322390750 +0200
-@@ -16,10 +16,16 @@
++ }
++ } while (size > 0);
++
+ if (fclose(fl))
+ log_sys_error("fclose", file);
+
+--- device-mapper.1.02.22/lib/libdm-file.c.orig 2007-08-21 18:26:06.000000000 +0200
++++ device-mapper.1.02.22/lib/libdm-file.c 2007-09-10 00:20:00.475926641 +0200
+@@ -15,10 +15,16 @@
+
#include "lib.h"
- #include "libdm-file.h"
-#include <sys/file.h>
#include <fcntl.h>
static int _create_dir_recursive(const char *dir)
{
char *orig, *s;
+@@ -73,7 +79,11 @@
+
+ int dm_fclose(FILE *stream)
+ {
++#ifdef __KLIBC__
++ int prev_fail = 0;
++#else
+ int prev_fail = ferror(stream);
++#endif
+ int fclose_fail = fclose(stream);
+
+ /* If there was a previous failure, but fclose succeeded,