Introduction
Introduction Statistics Contact Development Disclaimer Help
tresolve absolute paths to repodir, remove basename just use strrchr. - stagit …
git clone git://src.adamsgaard.dk/stagit
Log
Files
Refs
README
LICENSE
---
commit 8df54926f2ad80ae46a4cc701f3341e97839e0c8
parent 70b777831a80a7a204f02697563d39dba612c8c4
Author: Hiltjo Posthuma <[email protected]>
Date: Wed, 27 Apr 2016 19:19:50 +0200
resolve absolute paths to repodir, remove basename just use strrchr.
- resolve repodir, for example: stagit-index ../ used to use ".." as the name,
now it will resolve to the real directory name.
- just use strrchr(path, '/') instead of basename, '/' path separator is now
used.
Diffstat:
M stagit-index.c | 37 ++++++++---------------------…
M stagit.c | 32 ++++++++---------------------…
2 files changed, 17 insertions(+), 52 deletions(-)
---
diff --git a/stagit-index.c b/stagit-index.c
t@@ -3,7 +3,6 @@
#include <err.h>
#include <errno.h>
#include <inttypes.h>
-#include <libgen.h>
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
t@@ -21,7 +20,7 @@ static const char *relpath = "";
static const char *repodir;
static char description[255] = "Repositories";
-static char name[255];
+static char *name = "";
static char owner[255];
/* Escape characters below as HTML 2.0 / XML 1.0. */
t@@ -42,27 +41,6 @@ xmlencode(FILE *fp, const char *s, size_t len)
}
}
-/* Some implementations of basename(3) return a pointer to a static
- * internal buffer (OpenBSD). Others modify the contents of `path` (POSIX).
- * This is a wrapper function that is compatible with both versions.
- * The program will error out if basename(3) failed, this can only happen
- * with the OpenBSD version. */
-char *
-xbasename(const char *path)
-{
- char *p, *b;
-
- if (!(p = strdup(path)))
- err(1, "strdup");
- if (!(b = basename(p)))
- err(1, "basename");
- if (!(b = strdup(b)))
- err(1, "strdup");
- free(p);
-
- return b;
-}
-
void
printtimeformat(FILE *fp, const git_time *intime, const char *fmt)
{
t@@ -166,7 +144,7 @@ main(int argc, char *argv[])
{
const git_error *e = NULL;
FILE *fp;
- char path[PATH_MAX], *p;
+ char path[PATH_MAX], repodirabs[PATH_MAX + 1];
int i, r, ret = 0;
if (argc < 2) {
t@@ -179,6 +157,8 @@ main(int argc, char *argv[])
for (i = 1; i < argc; i++) {
repodir = argv[i];
+ if (!realpath(repodir, repodirabs))
+ err(1, "realpath");
if (git_repository_open_ext(&repo, repodir,
GIT_REPOSITORY_OPEN_NO_SEARCH, NULL)) {
t@@ -188,10 +168,11 @@ main(int argc, char *argv[])
continue;
}
- /* use directory name as name, truncation of name is no proble…
- p = xbasename(repodir);
- snprintf(name, sizeof(name), "%s", p);
- free(p);
+ /* use directory name as name */
+ if ((name = strrchr(repodirabs, '/')))
+ name++;
+ else
+ name = "";
/* read description or .git/description */
description[0] = '\0';
diff --git a/stagit.c b/stagit.c
t@@ -42,7 +42,7 @@ static git_repository *repo;
static const char *relpath = "";
static const char *repodir;
-static char *name;
+static char *name = "";
static char *stripped_name;
static char description[255];
static char cloneurl[1024];
t@@ -162,27 +162,6 @@ xdirname(const char *path)
return b;
}
-/* Some implementations of basename(3) return a pointer to a static
- * internal buffer (OpenBSD). Others modify the contents of `path` (POSIX).
- * This is a wrapper function that is compatible with both versions.
- * The program will error out if basename(3) failed, this can only happen
- * with the OpenBSD version. */
-char *
-xbasename(const char *path)
-{
- char *p, *b;
-
- if (!(p = strdup(path)))
- err(1, "strdup");
- if (!(b = basename(p)))
- err(1, "basename");
- if (!(b = strdup(b)))
- err(1, "strdup");
- free(p);
-
- return b;
-}
-
int
mkdirp(const char *path)
{
t@@ -879,7 +858,7 @@ main(int argc, char *argv[])
const git_oid *head = NULL;
const git_error *e = NULL;
FILE *fp, *fpread;
- char path[PATH_MAX], *p;
+ char path[PATH_MAX], repodirabs[PATH_MAX + 1], *p;
int r, status;
if (argc != 2) {
t@@ -887,6 +866,8 @@ main(int argc, char *argv[])
return 1;
}
repodir = argv[1];
+ if (!realpath(repodir, repodirabs))
+ err(1, "realpath");
git_libgit2_init();
t@@ -904,7 +885,10 @@ main(int argc, char *argv[])
git_object_free(obj);
/* use directory name as name */
- name = xbasename(repodir);
+ if ((name = strrchr(repodirabs, '/')))
+ name++;
+ else
+ name = "";
/* strip .git suffix */
if (!(stripped_name = strdup(name)))
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.