Upstream-Status: Denied [no desire for uclibc support]
Signed-off-by: Khem Raj <raj.khem@gmail.com>

Index: systemd-196/src/fsck/fsck.c
===================================================================
--- systemd-196.orig/src/fsck/fsck.c	2012-07-26 03:45:14.000000000 -0700
+++ systemd-196/src/fsck/fsck.c	2013-01-21 16:10:46.807537608 -0800
@@ -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) {
Index: systemd-196/src/core/swap.c
===================================================================
--- systemd-196.orig/src/core/swap.c	2012-10-29 19:40:42.000000000 -0700
+++ systemd-196/src/core/swap.c	2013-01-21 16:15:11.751544181 -0800
@@ -41,6 +41,8 @@
 #include "path-util.h"
 #include "virt.h"
 
+#include "config.h"
+
 static const UnitActiveState state_translation_table[_SWAP_STATE_MAX] = {
         [SWAP_DEAD] = UNIT_INACTIVE,
         [SWAP_ACTIVATING] = UNIT_ACTIVATING,
@@ -1059,6 +1061,7 @@
                 char *dev = NULL, *d;
                 int prio = 0, k;
 
+#ifdef HAVE_MSFORMAT
                 k = fscanf(m->proc_swaps,
                            "%ms "  /* device/file */
                            "%*s "  /* type of swap */
@@ -1066,6 +1069,16 @@
                            "%*s "  /* used */
                            "%i\n", /* priority */
                            &dev, &prio);
+#else
+                dev = malloc(257);
+                k = fscanf(m->proc_swaps,
+                           "%256s "/* device/file */
+                           "%*s "  /* type of swap */
+                           "%*s "  /* swap size */
+                           "%*s "  /* used */
+                           "%i\n", /* priority */
+                           dev, &prio);
+#endif /* HAVE_MSFORMAT */
                 if (k != 2) {
                         if (k == EOF)
                                 break;
Index: systemd-196/src/core/mount-setup.c
===================================================================
--- systemd-196.orig/src/core/mount-setup.c	2012-11-09 06:55:35.000000000 -0800
+++ systemd-196/src/core/mount-setup.c	2013-01-21 16:10:46.807537608 -0800
@@ -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"
@@ -42,6 +43,8 @@
 #include "missing.h"
 #include "virt.h"
 
+#include "config.h"
+
 #ifndef TTY_GID
 #define TTY_GID 5
 #endif
@@ -224,9 +227,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;
 
Index: systemd-196/src/core/mount.c
===================================================================
--- systemd-196.orig/src/core/mount.c	2012-10-22 16:53:02.000000000 -0700
+++ systemd-196/src/core/mount.c	2013-01-21 16:10:46.811537609 -0800
@@ -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,
@@ -1538,7 +1540,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 */
@@ -1557,7 +1559,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;
 
Index: systemd-196/src/core/umount.c
===================================================================
--- systemd-196.orig/src/core/umount.c	2012-11-16 09:32:41.000000000 -0800
+++ systemd-196/src/core/umount.c	2013-01-21 16:10:46.811537609 -0800
@@ -36,6 +36,8 @@
 #include "util.h"
 #include "virt.h"
 
+#include "config.h"
+
 typedef struct MountPoint {
         char *path;
         dev_t devnum;
@@ -75,7 +77,7 @@
                 MountPoint *m;
 
                 path = p = NULL;
-
+#ifdef HAVE_MSFORMAT
                 if ((k = fscanf(proc_self_mountinfo,
                                 "%*s "       /* (1) mount id */
                                 "%*s "       /* (2) parent id */
@@ -90,6 +92,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;
 
@@ -151,7 +170,7 @@
                 MountPoint *swap;
                 char *dev = NULL, *d;
                 int k;
-
+#ifdef HAVE_MSFORMAT
                 if ((k = fscanf(proc_swaps,
                                 "%ms " /* device/file */
                                 "%*s " /* type of swap */
@@ -159,7 +178,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;
 
Index: systemd-196/src/shared/socket-util.c
===================================================================
--- systemd-196.orig/src/shared/socket-util.c	2012-11-14 13:21:15.000000000 -0800
+++ systemd-196/src/shared/socket-util.c	2013-01-21 16:10:46.811537609 -0800
@@ -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;
@@ -202,8 +204,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 */
 
         family = netlink_family_from_string(sfamily);
         if (family < 0)
Index: systemd-196/src/tmpfiles/tmpfiles.c
===================================================================
--- systemd-196.orig/src/tmpfiles/tmpfiles.c	2012-10-23 16:06:30.000000000 -0700
+++ systemd-196/src/tmpfiles/tmpfiles.c	2013-01-21 16:10:46.811537609 -0800
@@ -51,6 +51,8 @@
 #include "conf-files.h"
 #include "capability.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
@@ -990,7 +992,7 @@
         i = new0(Item, 1);
         if (!i)
                 return log_oom();
-
+#ifdef HAVE_MSFORMAT
         if (sscanf(buffer,
                    "%c "
                    "%ms "
@@ -1006,6 +1008,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;
Index: systemd-196/src/cryptsetup/cryptsetup-generator.c
===================================================================
--- systemd-196.orig/src/cryptsetup/cryptsetup-generator.c	2012-08-08 14:53:24.000000000 -0700
+++ systemd-196/src/cryptsetup/cryptsetup-generator.c	2013-01-21 16:10:46.811537609 -0800
@@ -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;
