void create_patches_tmp_filename(const char *path) { int i; char *dir = get_tmp_directory(); snprintf(patches_tmp_filename, PATH_MAX, "%s/WhySynth_patches-%s", dir, path); for (i = strlen(dir) + 1; i < strlen(patches_tmp_filename); i++) { if (patches_tmp_filename[i] == '/') patches_tmp_filename[i] = '_'; } g_free(dir); }
/** * Function to prepare the container directories. * It creates the container work and log directories. */ static int create_container_directories(const char* user, const char *app_id, const char *container_id, char* const* local_dir, char* const* log_dir, const char *work_dir) { // create dirs as 0750 const mode_t perms = S_IRWXU | S_IRGRP | S_IXGRP; if (app_id == NULL || container_id == NULL || user == NULL) { fprintf(LOGFILE, "Either app_id, container_id or the user passed is null.\n"); return -1; } int result = -1; char* const* local_dir_ptr; for(local_dir_ptr = local_dir; *local_dir_ptr != NULL; ++local_dir_ptr) { char *container_dir = get_container_work_directory(*local_dir_ptr, user, app_id, container_id); if (container_dir == NULL) { return -1; } if (mkdirs(container_dir, perms) == 0) { result = 0; } // continue on to create other work directories free(container_dir); } if (result != 0) { return result; } result = -1; // also make the directory for the container logs char *combined_name = malloc(strlen(app_id) + strlen(container_id) + 2); if (combined_name == NULL) { fprintf(LOGFILE, "Malloc of combined name failed\n"); result = -1; } else { sprintf(combined_name, "%s/%s", app_id, container_id); char* const* log_dir_ptr; for(log_dir_ptr = log_dir; *log_dir_ptr != NULL; ++log_dir_ptr) { char *container_log_dir = get_app_log_directory(*log_dir_ptr, combined_name); if (container_log_dir == NULL) { free(combined_name); return -1; } else if (mkdirs(container_log_dir, perms) != 0) { free(container_log_dir); } else { result = 0; free(container_log_dir); } } free(combined_name); } if (result != 0) { return result; } result = -1; // also make the tmp directory char *tmp_dir = get_tmp_directory(work_dir); if (tmp_dir == NULL) { return -1; } if (mkdirs(tmp_dir, perms) == 0) { result = 0; } free(tmp_dir); return result; }