diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2019-12-18 21:57:51 -0500 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2019-12-18 21:57:51 -0500 |
commit | 534657dd6fc2ee98159e41d2700554fed0da2c4e (patch) | |
tree | d9316757b060d68e5640ea9ecb56b29c62adedfc /install.c | |
parent | 3166627f1485e2f05421fe874b2236852fe5d017 (diff) | |
download | spmc-534657dd6fc2ee98159e41d2700554fed0da2c4e.tar.gz |
Refactor project structure
Diffstat (limited to 'install.c')
-rw-r--r-- | install.c | 63 |
1 files changed, 0 insertions, 63 deletions
diff --git a/install.c b/install.c deleted file mode 100644 index e647d31..0000000 --- a/install.c +++ /dev/null @@ -1,63 +0,0 @@ -#include "spm.h" - -int install(const char *destroot, const char *_package) { - char *package = find_package(_package); - if (!package) { - fprintf(SYSERROR); - return -1; - } - - if (exists(destroot) != 0) { - if (mkdirs(destroot, 0755) != 0) { - fprintf(SYSERROR); - return -2; - } - } - - char cwd[PATH_MAX]; - char source[PATH_MAX]; - char template[PATH_MAX]; - char suffix[PATH_MAX] = "spm_destroot_XXXXXX"; - sprintf(template, "%s%c%s", TMP_DIR, DIRSEP, suffix); - - // Create a new temporary directory and extract the requested package into it - char *tmpdir = mkdtemp(template); - tar_extract_archive(package, tmpdir); - - getcwd(cwd, sizeof(cwd)); - - RelocationEntry **b_record = NULL; - RelocationEntry **t_record = NULL; - chdir(tmpdir); - { - // Rewrite binary prefixes - RelocationEntry **b_record = prefixes_read(".SPM_PREFIX_BIN"); - if (b_record) { - for (int i = 0; b_record[i] != NULL; i++) { - relocate(b_record[i]->path, b_record[i]->prefix, destroot); - } - } - - // Rewrite text prefixes - RelocationEntry **t_record = prefixes_read(".SPM_PREFIX_TEXT"); - if (t_record) { - for (int i = 0; t_record[i] != NULL; i++) { - file_replace_text(t_record[i]->path, t_record[i]->prefix, destroot); - } - } - - prefixes_free(b_record); - prefixes_free(t_record); - } - chdir(cwd); - - - // Append a trailing slash to tmpdir to direct rsync to copy files, not the directory, into destroot - sprintf(source, "%s%c", tmpdir, DIRSEP); - if (rsync(NULL, source, destroot) != 0) { - exit(1); - } - rmdirs(tmpdir); - - free(package); -} |