aboutsummaryrefslogtreecommitdiff
path: root/src/pkg.c
diff options
context:
space:
mode:
authordacctal <donotcontactmevia@email.invalid>2026-08-17 13:31:42 +0000
committerdacctal <donotcontactmevia@email.invalid>2026-08-17 13:31:42 +0000
commit7db56ed3f9d1fcb8b6780b7c30ad93904625a0a3 (patch)
tree91c6e60d239c89ce29ea23b1dd9b8fcf66ce16d7 /src/pkg.c
parent536b651f4086fe01d0bd1f743f54ef650524b122 (diff)
fundamentals are working and beautiful
Diffstat (limited to 'src/pkg.c')
-rw-r--r--src/pkg.c25
1 files changed, 15 insertions, 10 deletions
diff --git a/src/pkg.c b/src/pkg.c
index 97417bc..5e8ecaf 100644
--- a/src/pkg.c
+++ b/src/pkg.c
@@ -31,22 +31,26 @@
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));
+ result = str_format("%.*s/%.*s",
+ str_fmt(&config.inst_dirs.src), str_fmt(cwd));
} else { str name = {0};
- if (str_find_char(arg, '/') != 0) name = str_from_after_delim(arg, '/');
+ 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));
+ result = str_format("%.*s/%.*s",
+ str_fmt(&config.inst_dirs.src), str_fmt(&name));
str_free(&name);
}
return result;
}
-static str get_pkgsrc(package_t *pkg) {
- if (pkg->is_local == 1)
- return str_format("%.*s/%.*s", str_fmt(&config.inst_dirs.src), str_fmt(&pkg->name));
- else
- return str_format("%.*s/%.*s/%.*s", str_fmt(&config.inst_dirs.src),
- str_fmt(&pkg->name), str_fmt(&pkg->version));
+static void set_pkgsrc(package_t *pkg) {
+ pkg->root = str_format("%.*s/%.*s",
+ str_fmt(&config.inst_dirs.src), str_fmt(&pkg->name));
+ if (pkg->is_local) pkg->src = pkg->root;
+ else pkg->src = str_format("%.*s/%.*s/%.*s",
+ str_fmt(&config.inst_dirs.src), str_fmt(&pkg->name),
+ str_fmt(&pkg->version));
}
static void assign_pkg_version(package_t *pkg, str *new_arg_str) {
@@ -89,7 +93,7 @@ package_t pkg_create(str *arg) {
abort();
}
- pkg.src = get_pkgsrc(&pkg);
+ set_pkgsrc(&pkg);
str_free(&cwd);
str_free(&destdir);
@@ -101,4 +105,5 @@ void pkg_free(package_t *pkg) {
str_free(&pkg->version);
str_free(&pkg->url);
str_free(&pkg->src);
+ str_free(&pkg->root);
}