--- systemd-pam-185/src/fsck/fsck.c.orig	2012-06-22 23:22:22.000000000 -0400
+++ systemd-pam-185/src/fsck/fsck.c	2012-06-22 21:15:56.000000000 -0400
@@ -36,6 +36,8 @@
 #include "bus-errors.h"
 #include "virt.h"
 
+#include "config.h"
+
 static bool arg_skip = false;
 static bool arg_force = false;
 static bool arg_show_progress = false;
@@ -193,9 +195,16 @@
                 char *device;
                 double p;
                 usec_t t;
-
+#ifdef HAVE_MSFORMAT
                 if (fscanf(f, "%i %lu %lu %ms", &pass, &cur, &max, &device) != 4)
-                        break;
+#else
+		device = malloc(257);
+		if (fscanf(f, "%i %lu %lu %256s", &pass, &cur, &max, device) != 4) {
+			free(device);
+		}
+
+#endif /* HAVE_MSFORMAT */
+			break;
 
                 /* Only show one progress counter at max */
                 if (!locked) {
--- systemd-pam-185/src/core/swap.c.orig	2012-06-22 23:22:55.000000000 -0400
+++ systemd-pam-185/src/core/swap.c	2012-06-22 21:17:10.000000000 -0400
@@ -40,6 +40,8 @@
 #include "def.h"
 #include "path-util.h"
 
+#include "config.h"
+
 static const UnitActiveState state_translation_table[_SWAP_STATE_MAX] = {
         [SWAP_DEAD] = UNIT_INACTIVE,
         [SWAP_ACTIVATING] = UNIT_ACTIVATING,
@@ -1038,7 +1040,7 @@
         for (i = 1;; i++) {
                 char *dev = NULL, *d;
                 int prio = 0, k;
-
+#ifdef HAVE_MSFORMAT
                 if ((k = fscanf(m->proc_swaps,
                                 "%ms "  /* device/file */
                                 "%*s "  /* type of swap */
@@ -1046,10 +1048,18 @@
                                 "%*s "  /* used */
                                 "%i\n", /* priority */
                                 &dev, &prio)) != 2) {
-
+#else
+		dev = malloc(257);
+                if ((k = fscanf(m->proc_swaps,
+                                "%256s "   /* device/file */
+                                "%*s "  /* type of swap */
+                                "%*s "  /* swap size */
+                                "%*s "  /* used */
+                                "%i\n", /* priority */
+                                dev, &prio)) != 2) {
+#endif /* HAVE_MSFORMAT */
                         if (k == EOF)
                                 break;
-
                         log_warning("Failed to parse /proc/swaps:%u.", i);
                         free(dev);
                         continue;
--- systemd-pam-185/src/core/mount-setup.c.orig	2012-06-22 23:23:41.000000000 -0400
+++ systemd-pam-185/src/core/mount-setup.c	2012-06-22 21:19:44.000000000 -0400
@@ -28,6 +28,7 @@
 #include <assert.h>
 #include <unistd.h>
 #include <ftw.h>
+#include <linux/fs.h>

 #include "mount-setup.h"
 #include "dev-setup.h"
@@ -41,6 +41,8 @@
 #include "path-util.h"
 #include "missing.h"
 
+#include "config.h"
+
 #ifndef TTY_GID
 #define TTY_GID 5
 #endif
@@ -200,9 +202,12 @@
         for (;;) {
                 char *controller;
                 int enabled = 0;
-
+#ifdef HAVE_MSFORMAT
                 if (fscanf(f, "%ms %*i %*i %i", &controller, &enabled) != 2) {
-
+#else
+		controller = malloc(257);
+                if (fscanf(f, "%256s %*i %*i %i", controller, &enabled) != 2) {
+#endif /* HAVE_MSFORMAT */
                         if (feof(f))
                                 break;
 
--- systemd-pam-185/src/core/mount.c.orig	2012-06-22 23:24:17.000000000 -0400
+++ systemd-pam-185/src/core/mount.c	2012-06-22 22:51:21.000000000 -0400
@@ -41,6 +41,8 @@
 #include "exit-status.h"
 #include "def.h"
 
+#include "config.h"
+
 static const UnitActiveState state_translation_table[_MOUNT_STATE_MAX] = {
         [MOUNT_DEAD] = UNIT_INACTIVE,
         [MOUNT_MOUNTING] = UNIT_ACTIVATING,
@@ -1514,7 +1516,7 @@
                 int k;
 
                 device = path = options = options2 = fstype = d = p = o = NULL;
-
+#ifdef HAVE_MSFORMAT
                 if ((k = fscanf(m->proc_self_mountinfo,
                                 "%*s "       /* (1) mount id */
                                 "%*s "       /* (2) parent id */
@@ -1533,7 +1535,31 @@
                                 &fstype,
                                 &device,
                                 &options2)) != 5) {
-
+#else
+		path = malloc(257);
+		options = malloc(257);
+		fstype = malloc(257);
+		device = malloc(257);
+		options2 = malloc(257);
+                if ((k = fscanf(m->proc_self_mountinfo,
+                                "%*s "       /* (1) mount id */
+                                "%*s "       /* (2) parent id */
+                                "%*s "       /* (3) major:minor */
+                                "%*s "       /* (4) root */
+                                "%256s "     /* (5) mount point */
+                                "%256s"      /* (6) mount options */
+                                "%*[^-]"     /* (7) optional fields */
+                                "- "         /* (8) separator */
+                                "%256s "     /* (9) file system type */
+                                "%256s"      /* (10) mount source */
+                                "%256s"      /* (11) mount options 2 */
+                                "%*[^\n]",   /* some rubbish at the end */
+                                path,
+                                options,
+                                fstype,
+                                device,
+                                options2)) != 5) {
+#endif /* HAVE_MSFORMAT */
                         if (k == EOF)
                                 break;
 
--- systemd-pam-185/src/core/umount.c.orig	2012-06-22 23:24:37.000000000 -0400
+++ systemd-pam-185/src/core/umount.c	2012-06-22 22:56:15.000000000 -0400
@@ -35,6 +35,8 @@
 #include "path-util.h"
 #include "util.h"
 
+#include "config.h"
+
 typedef struct MountPoint {
         char *path;
         dev_t devnum;
@@ -74,7 +76,7 @@
                 MountPoint *m;
 
                 path = p = NULL;
-
+#ifdef HAVE_MSFORMAT
                 if ((k = fscanf(proc_self_mountinfo,
                                 "%*s "       /* (1) mount id */
                                 "%*s "       /* (2) parent id */
@@ -89,6 +91,23 @@
                                 "%*s"        /* (11) mount options 2 */
                                 "%*[^\n]",   /* some rubbish at the end */
                                 &path)) != 1) {
+#else
+		path = malloc(257);
+                if ((k = fscanf(proc_self_mountinfo,
+                                "%*s "       /* (1) mount id */
+                                "%*s "       /* (2) parent id */
+                                "%*s "       /* (3) major:minor */
+                                "%*s "       /* (4) root */
+                                "%256s "     /* (5) mount point */
+                                "%*s"        /* (6) mount options */
+                                "%*[^-]"     /* (7) optional fields */
+                                "- "         /* (8) separator */
+                                "%*s "       /* (9) file system type */
+                                "%*s"        /* (10) mount source */
+                                "%*s"        /* (11) mount options 2 */
+                                "%*[^\n]",   /* some rubbish at the end */
+                                path)) != 1) {
+#endif /* HAVE_MSFORMAT */
                         if (k == EOF)
                                 break;
 
@@ -150,7 +169,7 @@
                 MountPoint *swap;
                 char *dev = NULL, *d;
                 int k;
-
+#ifdef HAVE_MSFORMAT
                 if ((k = fscanf(proc_swaps,
                                 "%ms " /* device/file */
                                 "%*s " /* type of swap */
@@ -158,7 +177,16 @@
                                 "%*s " /* used */
                                 "%*s\n", /* priority */
                                 &dev)) != 1) {
-
+#else
+		dev = malloc(257);
+                if ((k = fscanf(proc_swaps,
+                                "%256s " /* device/file */
+                                "%*s " /* type of swap */
+                                "%*s " /* swap size */
+                                "%*s " /* used */
+                                "%*s\n", /* priority */
+                                dev)) != 1) {
+#endif /* HAVE_MSFORMAT */
                         if (k == EOF)
                                 break;
 
--- systemd-pam-185/src/shared/socket-util.c.orig	2012-06-22 23:25:00.000000000 -0400
+++ systemd-pam-185/src/shared/socket-util.c	2012-06-22 22:59:27.000000000 -0400
@@ -39,6 +39,8 @@
 #include "socket-util.h"
 #include "missing.h"
 
+#include "config.h"
+
 int socket_address_parse(SocketAddress *a, const char *s) {
         int r;
         char *e, *n;
@@ -201,8 +203,16 @@
         a->type = SOCK_RAW;
 
         errno = 0;
-        if (sscanf(s, "%ms %u", &sfamily, &group) < 1)
+#ifdef HAVE_MSFORMAT
+	if (sscanf(s, "%ms %u", &sfamily, &group) < 1)
+                return errno ? -errno : -EINVAL;
+#else
+	sfamily = malloc(257);
+	if (sscanf(s, "%256s %u", sfamily, &group) < 1) {
+		free(sfamily);
                 return errno ? -errno : -EINVAL;
+	}
+#endif /* HAVE_MSFORMAT */
 
         if ((family = netlink_family_from_string(sfamily)) < 0)
                 if (safe_atoi(sfamily, &family) < 0) {
--- systemd-pam-185/src/tmpfiles/tmpfiles.c.orig	2012-06-22 23:25:21.000000000 -0400
+++ systemd-pam-185/src/tmpfiles/tmpfiles.c	2012-06-22 23:13:49.000000000 -0400
@@ -48,6 +48,8 @@
 #include "set.h"
 #include "conf-files.h"
 
+#include "config.h"
+
 /* This reads all files listed in /etc/tmpfiles.d/?*.conf and creates
  * them in the file system. This is intended to be used to create
  * properly owned directories beneath /tmp, /var/tmp, /run, which are
@@ -970,7 +972,7 @@
         i = new0(Item, 1);
         if (!i)
                 return log_oom();
-
+#ifdef HAVE_MSFORMAT
         if (sscanf(buffer,
                    "%c "
                    "%ms "
@@ -986,6 +988,28 @@
                    &group,
                    &age,
                    &n) < 2) {
+#else
+	i->path = malloc(257);
+	mode = malloc(257);
+	user = malloc(257);
+	group = malloc(257);
+	age = malloc(257);
+        if (sscanf(buffer,
+                   "%c "
+                   "%256s "
+                   "%256s "
+                   "%256s "
+                   "%256s "
+                   "%256s "
+                   "%n",
+                   &type,
+                   i->path,
+                   mode,
+                   user,
+                   group,
+                   age,
+                   &n) < 2) {
+#endif /* HAVE_MSFORMAT */
                 log_error("[%s:%u] Syntax error.", fname, line);
                 r = -EIO;
                 goto finish;
--- systemd-pam-185/src/cryptsetup/cryptsetup-generator.c.orig	2012-06-22 23:25:47.000000000 -0400
+++ systemd-pam-185/src/cryptsetup/cryptsetup-generator.c	2012-06-22 23:16:35.000000000 -0400
@@ -30,6 +30,8 @@
 #include "virt.h"
 #include "strv.h"
 
+#include "config.h"
+
 static const char *arg_dest = "/tmp";
 static bool arg_enabled = true;
 static bool arg_read_crypttab = true;
@@ -421,8 +423,15 @@
                 l = strstrip(line);
                 if (*l == '#' || *l == 0)
                         continue;
-
+#ifdef HAVE_MSFORMAT
                 k = sscanf(l, "%ms %ms %ms %ms", &name, &device, &password, &options);
+#else
+		name = malloc(257);
+		device = malloc(257);
+		password = malloc(257);
+		options = malloc(257);
+                k = sscanf(l, "%256s %256s %256s %256s", name, device, password, options);
+#endif /* HAVE_MSFORMAT */
                 if (k < 2 || k > 4) {
                         log_error("Failed to parse /etc/crypttab:%u, ignoring.", n);
                         r = EXIT_FAILURE;
