aboutsummaryrefslogtreecommitdiff
path: root/src/pkg.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pkg.c')
-rw-r--r--src/pkg.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/pkg.c b/src/pkg.c
index fe79b64..97417bc 100644
--- a/src/pkg.c
+++ b/src/pkg.c
@@ -32,8 +32,7 @@ static str get_destdir(str *cwd, str *arg) {
str result = {0};
if (str_first(arg) == '.' && arg->len == 1) {
result = str_format("%.*s/%.*s", str_fmt(&config.inst_dirs.src), str_fmt(cwd));
- } else {
- str name = {0};
+ } else { str name = {0};
if (str_find_char(arg, '/') != 0) name = str_from_after_delim(arg, '/');
else str_copy_into(&name, arg);
result = str_format("%.*s/%.*s", str_fmt(&config.inst_dirs.src), str_fmt(&name));
@@ -54,7 +53,7 @@ static void assign_pkg_version(package_t *pkg, str *new_arg_str) {
if (str_find_char(new_arg_str, '@')) {
pkg->version = str_from_after_delim(new_arg_str, '@');
pkg->name.len -= pkg->version.len + 1;
- } else str_copy_cstr_into(&pkg->version, "HEAD");;
+ } else str_copy_cstr_into(&pkg->version, "master");;
}
package_t pkg_create(str *arg) {
@@ -67,7 +66,8 @@ package_t pkg_create(str *arg) {
str cwd = mstr(cwd_cstr);
str destdir = get_destdir(&cwd, arg);
- if (strncmp(arg->data, "http", 4) == 0 || strncmp(arg->data, "ssh", 3) == 0) {
+ if (strncmp(arg->data, "http", 4) == 0
+ || strncmp(arg->data, "ssh", 3) == 0) {
str_copy_into(&pkg.url, arg);
pkg.name = str_from_after_delim(arg, '/');
} else if (str_equal_cstr(arg, ".")) {
@@ -89,5 +89,16 @@ package_t pkg_create(str *arg) {
abort();
}
+ pkg.src = get_pkgsrc(&pkg);
+ str_free(&cwd);
+ str_free(&destdir);
+
return pkg;
}
+
+void pkg_free(package_t *pkg) {
+ str_free(&pkg->name);
+ str_free(&pkg->version);
+ str_free(&pkg->url);
+ str_free(&pkg->src);
+}