#include "util.h" #include #include #include #include #include char *util_userHome(int uid, char *buffer, size_t len) { struct passwd pwd; struct passwd *res; char b[1000]; getpwuid_r(uid, &pwd, b, sizeof b, &res); if (res == NULL || res->pw_dir == NULL) return NULL; int printret = snprintf(buffer, len, "%s", res->pw_dir); if (printret < 0 || printret >= (int)len) return NULL; buffer[len-1] = '\0'; return buffer; } char *util_sockPath(int uid, int pid, char *buffer, size_t len) { char home[120]; if (uid == -1) { uid = (int)getuid(); } if (pid == -1) { pid = (int)getpid(); } if (util_userHome(uid, home, sizeof home) == NULL) return NULL; int printret = snprintf(buffer, len, "%s/.printergui.%d", pid); if (printret < 0 || printret >= (int)len) return NULL; return buffer; }