summaryrefslogtreecommitdiffabout
authorStefan Naewe <stefan.naewe@atlas-elektronik.com>2009-08-20 06:24:51 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2009-08-20 08:11:07 (UTC)
commit6445a3ad0987ba66eef555c9caa3fc378f99ee22 (patch) (side-by-side diff)
treed2cc2bf1e0fbe8a22d137095701b76d15fea3ca6
parent0374a76ce10e50a803df21288888edd4d26a14a9 (diff)
downloadcgit-6445a3ad0987ba66eef555c9caa3fc378f99ee22.zip
cgit-6445a3ad0987ba66eef555c9caa3fc378f99ee22.tar.gz
cgit-6445a3ad0987ba66eef555c9caa3fc378f99ee22.tar.bz2
scan-tree: split the pw_gecos field at the ',' to get the real name
Signed-off-by: Stefan Naewe <stefan.naewe@atlas-elektronik.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--scan-tree.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/scan-tree.c b/scan-tree.c
index 95dc65b..4da21a4 100644
--- a/scan-tree.c
+++ b/scan-tree.c
@@ -35,64 +35,67 @@ static int is_git_dir(const char *path)
return 1;
}
static void add_repo(const char *base, const char *path)
{
struct cgit_repo *repo;
struct stat st;
struct passwd *pwd;
char *p;
size_t size;
if (stat(path, &st)) {
fprintf(stderr, "Error accessing %s: %s (%d)\n",
path, strerror(errno), errno);
return;
}
if ((pwd = getpwuid(st.st_uid)) == NULL) {
fprintf(stderr, "Error reading owner-info for %s: %s (%d)\n",
path, strerror(errno), errno);
return;
}
if (base == path)
p = fmt("%s", path);
else
p = fmt("%s", path + strlen(base) + 1);
if (!strcmp(p + strlen(p) - 5, "/.git"))
p[strlen(p) - 5] = '\0';
repo = cgit_add_repo(xstrdup(p));
repo->name = repo->url;
repo->path = xstrdup(path);
+ p = (pwd && pwd->pw_gecos) ? strchr(pwd->pw_gecos, ',') : NULL;
+ if (p)
+ *p = '\0';
repo->owner = (pwd ? xstrdup(pwd->pw_gecos ? pwd->pw_gecos : pwd->pw_name) : "");
p = fmt("%s/description", path);
if (!stat(p, &st))
readfile(p, &repo->desc, &size);
p = fmt("%s/README.html", path);
if (!stat(p, &st))
repo->readme = "README.html";
}
static void scan_path(const char *base, const char *path)
{
DIR *dir;
struct dirent *ent;
char *buf;
struct stat st;
if (is_git_dir(path)) {
add_repo(base, path);
return;
}
dir = opendir(path);
if (!dir) {
fprintf(stderr, "Error opening directory %s: %s (%d)\n",
path, strerror(errno), errno);
return;
}
while((ent = readdir(dir)) != NULL) {
if (ent->d_name[0] == '.') {
if (ent->d_name[1] == '\0')
continue;