t9300: use test_cmp_bin instead of test_cmp to compare binary files
[gitweb.git] / path.c
diff --git a/path.c b/path.c
index 24594c41120bebab1e04f5bc4bd8fc484ea71b97..3afcdb432a009b5e1c869123139192cf1a688292 100644 (file)
--- a/path.c
+++ b/path.c
@@ -249,9 +249,7 @@ int validate_headref(const char *path)
 static struct passwd *getpw_str(const char *username, size_t len)
 {
        struct passwd *pw;
-       char *username_z = xmalloc(len + 1);
-       memcpy(username_z, username, len);
-       username_z[len] = '\0';
+       char *username_z = xmemdupz(username, len);
        pw = getpwnam(username_z);
        free(username_z);
        return pw;
@@ -265,28 +263,28 @@ static struct passwd *getpw_str(const char *username, size_t len)
 char *expand_user_path(const char *path)
 {
        struct strbuf user_path = STRBUF_INIT;
-       const char *first_slash = strchrnul(path, '/');
        const char *to_copy = path;
 
        if (path == NULL)
                goto return_null;
        if (path[0] == '~') {
+               const char *first_slash = strchrnul(path, '/');
                const char *username = path + 1;
                size_t username_len = first_slash - username;
                if (username_len == 0) {
                        const char *home = getenv("HOME");
                        if (!home)
                                goto return_null;
-                       strbuf_add(&user_path, home, strlen(home));
+                       strbuf_addstr(&user_path, home);
                } else {
                        struct passwd *pw = getpw_str(username, username_len);
                        if (!pw)
                                goto return_null;
-                       strbuf_add(&user_path, pw->pw_dir, strlen(pw->pw_dir));
+                       strbuf_addstr(&user_path, pw->pw_dir);
                }
                to_copy = first_slash;
        }
-       strbuf_add(&user_path, to_copy, strlen(to_copy));
+       strbuf_addstr(&user_path, to_copy);
        return strbuf_detach(&user_path, NULL);
 return_null:
        strbuf_release(&user_path);
@@ -823,10 +821,3 @@ int daemon_avoid_alias(const char *p)
                }
        }
 }
-
-int offset_1st_component(const char *path)
-{
-       if (has_dos_drive_prefix(path))
-               return 2 + is_dir_sep(path[2]);
-       return is_dir_sep(path[0]);
-}