From e492020c200dddb387e686d4e04bbfc502bb13dc Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Mon, 31 Jul 2023 09:59:52 +0600 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=B8=D0=B5?= =?UTF-8?q?=20=D0=BA=D0=BE=D0=BD=D1=84=D0=B8=D0=B3=D0=B0=20=D0=B4=D0=B8?= =?UTF-8?q?=D1=81=D0=BA=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/model/save.c | 55 +++++++++++++++++++++++++++++++++++++-------- 1 file changed, 46 insertions(+), 9 deletions(-) diff --git a/source/model/save.c b/source/model/save.c index 326ca56..5db594d 100644 --- a/source/model/save.c +++ b/source/model/save.c @@ -61,11 +61,41 @@ char* save_format_status_cmd_all(vector* vec_temp, vector* vec_status_disk) { } return cmd; } + +char* set_status_and_del(config_all* _all_config) { + char* cmd = yon_char_new(""); + for (int j=0; j < _all_config->v_disk_status.vectorList.total;j++) { + disk_status* config_disk_status = (disk_status*)_all_config->v_disk_status.pfVectorGet(&_all_config->v_disk_status, j); + if (config_disk_status->status == 2) { + cmd = yon_char_unite(cmd, " DISK_QUOTA[usrquota:" , config_disk_status->device, "]=enable ", NULL); + cmd = yon_char_unite(cmd, " DISK_QUOTA[grpquota:" , config_disk_status->device, "]=enable ", NULL); + cmd = yon_char_unite(cmd, " DISK_QUOTA[prjquota:" , config_disk_status->device, "]=enable ", NULL); + } + else if (config_disk_status->status == 1) { + cmd = yon_char_unite(cmd, " DISK_QUOTA[usrquota:" , config_disk_status->device, "]=disable ", NULL); + cmd = yon_char_unite(cmd, " DISK_QUOTA[grpquota:" , config_disk_status->device, "]=disable ", NULL); + cmd = yon_char_unite(cmd, " DISK_QUOTA[prjquota:" , config_disk_status->device, "]=disable ", NULL); + } + } + if (strlen(cmd) > 5) { + return cmd; + } + else { + return NULL; + } +} + char* wrapper_save_format_status_cmd_all(config_all* _all_config) { char* cmd = save_format_status_cmd_all(&_all_config->v_user, &_all_config->v_disk_status); cmd = yon_char_unite(cmd, " ", save_format_status_cmd_all(&_all_config->v_group ,&_all_config->v_disk_status), NULL); cmd = yon_char_unite(cmd, " ", save_format_status_cmd_all(&_all_config->v_project, &_all_config->v_disk_status), NULL); - return cmd; + if (strlen(cmd) > 5) { + return cmd; + } + else { + return set_status_and_del(_all_config); + } + } char* save_format_status_cmd(disk_status* config_disk_status, config_u_g_p* config) { @@ -108,18 +138,25 @@ char* template_format_remove_save(config_all* _all_config, char* source_remove_c } char* template_format_remove_save_device(config_all* _all_config, char* source_remove_cmd) { - char* cmd = NULL; + char* cmd = yon_char_new(""); if (_all_config->v_disk_remove.vectorList.total > 0) { for (int i=0; i < _all_config->v_disk_remove.vectorList.total; i++) { - disk_status* _config = (disk_status*)_all_config->v_disk_remove.pfVectorGet(&_all_config->v_disk_remove, i); - if (_config->status == 0) { - cmd = yon_char_unite(cmd, " DISK_QUOTA[usrquota:" , _config->device, "] ", NULL); - cmd = yon_char_unite(cmd, " DISK_QUOTA[grpquota:" , _config->device, "] ", NULL); - cmd = yon_char_unite(cmd, " DISK_QUOTA[prjquota:" , _config->device, "] ", NULL); - } + char* str_del = (char*)_all_config->v_disk_remove.pfVectorGet(&_all_config->v_disk_remove, i); + cmd = yon_char_unite(cmd, " DISK_QUOTA[usrquota:" , str_del, "] ", NULL); + cmd = yon_char_unite(cmd, " DISK_QUOTA[grpquota:" , str_del, "] ", NULL); + cmd = yon_char_unite(cmd, " DISK_QUOTA[prjquota:" , str_del, "] ", NULL); } } - return cmd; + if (strlen(cmd)>5) { + for (int i=0; i < _all_config->v_disk_remove.vectorList.total; i++) { + _all_config->v_disk_remove.pfVectorDelete(&_all_config->v_disk_remove, i); + } + return cmd; + } + else { + return NULL; + } + }