diff options
Diffstat (limited to 'src/wheel.c')
| -rw-r--r-- | src/wheel.c | 78 |
1 files changed, 0 insertions, 78 deletions
diff --git a/src/wheel.c b/src/wheel.c deleted file mode 100644 index b96df57..0000000 --- a/src/wheel.c +++ /dev/null @@ -1,78 +0,0 @@ -#include "wheel.h" - -struct Wheel *get_wheel_file(const char *basepath, const char *name, char *to_match[], unsigned match_mode) { - DIR *dp; - struct dirent *rec; - struct Wheel *result = NULL; - char package_path[PATH_MAX]; - char package_name[NAME_MAX]; - - strcpy(package_name, name); - tolower_s(package_name); - sprintf(package_path, "%s/%s", basepath, package_name); - - dp = opendir(package_path); - if (!dp) { - return NULL; - } - - while ((rec = readdir(dp)) != NULL) { - if (!strcmp(rec->d_name, ".") || !strcmp(rec->d_name, "..")) { - continue; - } - char filename[NAME_MAX]; - strcpy(filename, rec->d_name); - char *ext = strstr(filename, ".whl"); - if (ext) { - *ext = '\0'; - } else { - // not a wheel file. nothing to do - continue; - } - - size_t match = 0; - size_t pattern_count = 0; - for (; to_match[pattern_count] != NULL; pattern_count++) { - if (strstr(filename, to_match[pattern_count])) { - match++; - } - } - - if (!startswith(rec->d_name, name)) { - continue; - } - - if (match_mode == WHEEL_MATCH_EXACT && match != pattern_count) { - continue; - } - - result = calloc(1, sizeof(*result)); - result->path_name = realpath(package_path, NULL); - result->file_name = strdup(rec->d_name); - - size_t parts_total; - char **parts = split(filename, "-", 0); - for (parts_total = 0; parts[parts_total] != NULL; parts_total++); - if (parts_total < 6) { - // no build tag - result->distribution = strdup(parts[0]); - result->version = strdup(parts[1]); - result->build_tag = NULL; - result->python_tag = strdup(parts[2]); - result->abi_tag = strdup(parts[3]); - result->platform_tag = strdup(parts[4]); - } else { - // has build tag - result->distribution = strdup(parts[0]); - result->version = strdup(parts[1]); - result->build_tag = strdup(parts[2]); - result->python_tag = strdup(parts[3]); - result->abi_tag = strdup(parts[4]); - result->platform_tag = strdup(parts[5]); - } - GENERIC_ARRAY_FREE(parts); - break; - } - closedir(dp); - return result; -} |
