chiark / gitweb /
core: rework unit name validation and manipulation logic
[elogind.git] / src / shared / install-printf.c
index 1ee1243f4d191c63e0acda1be7c06682db04efc3..7c25d369319982cbd0c4bffd2b35d55cbfb30f36 100644 (file)
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 ***/
 
-#include <assert.h>
 #include <stdlib.h>
 
 #include "specifier.h"
 #include "unit-name.h"
 #include "util.h"
 #include "install-printf.h"
+#include "formats-util.h"
 
 static int specifier_prefix_and_instance(char specifier, void *data, void *userdata, char **ret) {
         InstallInfo *i = userdata;
-        char *n;
 
         assert(i);
 
-        n = unit_name_to_prefix_and_instance(i->name);
-        if (!n)
-                return -ENOMEM;
-
-        *ret = n;
-        return 0;
+        return unit_name_to_prefix_and_instance(i->name, ret);
 }
 
 static int specifier_prefix(char specifier, void *data, void *userdata, char **ret) {
         InstallInfo *i = userdata;
-        char *n;
 
         assert(i);
 
-        n = unit_name_to_prefix(i->name);
-        if (!n)
-                return -ENOMEM;
-
-        *ret = n;
-        return 0;
+        return unit_name_to_prefix(i->name, ret);
 }
 
 static int specifier_instance(char specifier, void *data, void *userdata, char **ret) {
@@ -103,7 +91,7 @@ static int specifier_user_name(char specifier, void *data, void *userdata, char
                 if (r < 0)
                         return r;
 
-                if (asprintf(&printed, "%d", uid) < 0)
+                if (asprintf(&printed, UID_FMT, uid) < 0)
                         return -ENOMEM;
                 break;
         }}