int sort_paths(t_resources *resources) { t_path *tmp; int nb_path; int i; nb_path = 0; i = 0; if (!resources->paths || !resources->paths->next) return (0); tmp = resources->paths; while (tmp && ++nb_path > 0) tmp = tmp->next; while (++i < nb_path) { tmp = resources->paths; while (tmp && tmp->next) { if (tmp->size > tmp->next->size) switch_path(tmp, tmp->next); tmp = tmp->next; } } return (0); }
void init_paths(boolean for_commit) { struct stat statbuf; const char* tdirp = get_tdirp(); const char* cdirp = get_cdirp(); const char* adirp = get_adirp(); const char* mdirp = get_mdirp(); const char* tmpp = get_tmpp(); if (!mdirp || !mdirp[0]) bye("Environment variable %s for temp configuration is not set",ENV_M_DIR); if (!cdirp) bye("INTERNAL: environment var |%s| is not set", ENV_C_DIR); if (!tmpp || !tmpp[0]) bye("INTERNAL: environment var |%s| is not set", ENV_TMP_DIR); /* make sure that template root is present */ if (lstat(tdirp, &statbuf) < 0) bye("Template directory |%s| isn't present\n", tdirp); if ((statbuf.st_mode & S_IFMT) != S_IFDIR) bye("Template directory |%s| isn't a directory\n", tdirp); /* set paths to current roots */ if (for_commit) { int max_len; const char *startp; /* make sure that master configuration root is present */ if (lstat(adirp, &statbuf) < 0) bye("Master configuration directory |%s| isn't present\n", adirp); if ((statbuf.st_mode & S_IFMT) != S_IFDIR) bye("Master configuration directory |%s| isn't a directory\n", adirp); get_f_seg_a_ptr()->f_segp = adirp; get_f_seg_c_ptr()->f_segp = cdirp; get_f_seg_m_ptr()->f_segp = mdirp; get_f_seg_a_ptr()->f_seglen = strlen(adirp); get_f_seg_c_ptr()->f_seglen = strlen(cdirp); get_f_seg_m_ptr()->f_seglen = strlen(mdirp); if(get_f_seg_a_ptr()->f_seglen > get_f_seg_m_ptr()->f_seglen) { max_len = get_f_seg_a_ptr()->f_seglen; startp = adirp; }else{ max_len = get_f_seg_m_ptr()->f_seglen; startp = mdirp; } if(get_f_seg_c_ptr()->f_seglen > max_len) { max_len = get_f_seg_c_ptr()->f_seglen; startp = cdirp; } get_f_seg_a_ptr()->f_segoff = max_len - get_f_seg_a_ptr()->f_seglen; get_f_seg_c_ptr()->f_segoff = max_len - get_f_seg_c_ptr()->f_seglen; get_f_seg_m_ptr()->f_segoff = max_len - get_f_seg_m_ptr()->f_seglen; init_path(&m_path, startp); switch_path(get_f_seg_c_ptr()); m_path.print_offset = max_len; } else init_path(&m_path, mdirp); init_path(&t_path, tdirp); }