+ /* make the unit name */
+ len = strlen(unitname);
+ assert(len >= (sizeof service_extension - 1));
+ assert(!memcmp(&unitname[len - (sizeof service_extension - 1)], service_extension, sizeof service_extension));
+ if (unitname[len - sizeof service_extension] == '@') {
+ char buffer[40];
+ size_t l = (size_t)snprintf(buffer, sizeof buffer, "%d", (int)getuid());
+ un = malloc(len + l + 1);
+ if (!un)
+ goto error;
+ memcpy(&un[0], unitname, len - (sizeof service_extension - 1));
+ if (l)
+ memcpy(&un[len - (sizeof service_extension - 1)], buffer, l);
+ memcpy(&un[len - (sizeof service_extension - 1) + l], service_extension, sizeof service_extension);
+ }
+