From 35b44744aba0f77087625c4d13f6dd31c3f5eea9 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 23 Nov 2023 15:56:22 +0600 Subject: [PATCH] Added check for path repetition inside same log; Added 'Reset' button for journald menu --- Makefile | 2 + ...x.ubl-settings-logging.funnel-symbolic.svg | 45 +++++ source/ubl-settings-logging.c | 50 ++++- source/ubl-settings-logging.h | 1 + source/ubl-strings.h | 2 + ubl-settings-logging-filechooser.glade | 1 - ubl-settings-logging-journald.glade | 23 ++- ubl-settings-logging-logrotate.glade | 3 + ubl-settings-logging.pot | 174 +++++++++--------- ubl-settings-logging_ru.po | 174 +++++++++--------- 10 files changed, 305 insertions(+), 170 deletions(-) create mode 100644 icons/com.ublinux.ubl-settings-logging.funnel-symbolic.svg diff --git a/Makefile b/Makefile index 7e06a54..1306447 100644 --- a/Makefile +++ b/Makefile @@ -139,6 +139,7 @@ install: check uninstall @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.trash-symbolic.svg" @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.sort-symbolic.svg" @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.sync-symbolic.svg" + @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.funnel-symbolic.svg" @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.generic1-symbolic.svg" @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.generic2-symbolic.svg" @@ -150,6 +151,7 @@ install: check uninstall @install -Dm644 -t "${DESTDIR}/usr/share/${PKGNAME}/csv/" "journals_list.csv" @install -Dm644 -t "${DESTDIR}/usr/share/${PKGNAME}/csv/" "logging_services.csv" @install -Dm644 -t "${DESTDIR}/usr/share/polkit-1/actions/" "${CMAKE_BUILD_DIR}/com.ublinux.${PKGNAME}${PKGIDENT}.policy" + @install -Dm644 -t "${DESTDIR}/usr/share/polkit-1/actions/" "com.ublinux.${PKGNAME}.auth.policy" @if [ -z ${DESTDIR} ]; then \ [ -d "${DESTDIR}/usr/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}/usr/share/icons/hicolor/" &>/dev/null || true; \ update-desktop-database --quiet &>/dev/null || true; \ diff --git a/icons/com.ublinux.ubl-settings-logging.funnel-symbolic.svg b/icons/com.ublinux.ubl-settings-logging.funnel-symbolic.svg new file mode 100644 index 0000000..4aec04a --- /dev/null +++ b/icons/com.ublinux.ubl-settings-logging.funnel-symbolic.svg @@ -0,0 +1,45 @@ + + + + + + + + + + diff --git a/source/ubl-settings-logging.c b/source/ubl-settings-logging.c index e2815aa..023f30c 100644 --- a/source/ubl-settings-logging.c +++ b/source/ubl-settings-logging.c @@ -690,6 +690,15 @@ void on_logrotate_save(GtkWidget *self, dictionary *dict){ return; } } + if (paths){ + int psize=0; + config_str paths_parsed = yon_char_parse(paths,&psize,","); + if (yon_char_parsed_check_repeats(paths_parsed,psize)){ + yon_ubl_status_highlight_incorrect(gtk_widget_get_parent(window->LogPathsTree)); + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),REPEAT_PATHS_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + return; + } + } if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->RotationPeriodCheck))){ int active = gtk_combo_box_get_active(GTK_COMBO_BOX(window->RotationPeriodMainCombo)); switch (active){ @@ -1370,6 +1379,36 @@ void yon_combo_compress_check(GtkComboBox *self, journald_window *window){ } } +void on_journald_reset(GtkWidget *self, journald_window *window){ + gtk_combo_box_set_active(GTK_COMBO_BOX(window->LogStorageCombo),0); + gtk_combo_box_set_active(GTK_COMBO_BOX(window->LogCompressionCombo),0); + gtk_combo_box_set_active(GTK_COMBO_BOX(window->RedirectCombo),0); + gtk_combo_box_set_active(GTK_COMBO_BOX(window->LowerSizeCombo),0); + gtk_combo_box_set_active(GTK_COMBO_BOX(window->LowerTimeCombo),0); + gtk_combo_box_set_active(GTK_COMBO_BOX(window->LogStorageCombo),0); + gtk_combo_box_set_active(GTK_COMBO_BOX(window->LogFreeSpaceCombo),0); + gtk_combo_box_set_active(GTK_COMBO_BOX(window->ForwardedTypeCombo),0); + gtk_combo_box_set_active(GTK_COMBO_BOX(window->RotationSizeMaxCombo),0); + gtk_combo_box_set_active(GTK_COMBO_BOX(window->LogCompressionSizeCombo),0); + gtk_combo_box_set_active(GTK_COMBO_BOX(window->DivideJournalFilesCombo),0); + gtk_combo_box_set_active(GTK_COMBO_BOX(window->LogSizeMaxCombo),0); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->LogSizeMaxCheck),0); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->LogIntervalCheck),0); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->LogFreeSpaceCheck),0); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->RotationSizeMaxCheck),0); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->LogIntervalAmountCheck),0); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->LogSizeMaxSpin),0); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->LogIntervalSpin),0); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->LogFreeSpaceSpin),0); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->RotationSizeMaxSpin),0); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->LogIntervalAmountSpin),0); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->LogCompressionEntry),0); + gtk_entry_set_text(GTK_ENTRY(window->RedirectTTYEntry),""); + + gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->LowerSizeEntry),0); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->LowerTimeEntry),0); +} + void on_journald_save(GtkWidget *self, journald_window *window){ char *storage; int storage_active = gtk_combo_box_get_active(GTK_COMBO_BOX(window->LogStorageCombo)); @@ -1503,6 +1542,7 @@ journald_window *yon_journald_open(GtkWidget *self, main_window *widgets){ window->MainWindow=yon_gtk_builder_get_widget(builder,"MainWindow"); window->CancelButton=yon_gtk_builder_get_widget(builder,"CancelButton"); window->SaveButton=yon_gtk_builder_get_widget(builder,"SaveButton"); + window->ResetButton=yon_gtk_builder_get_widget(builder,"ResetButton"); window->LogNameLabel=yon_gtk_builder_get_widget(builder,"LogNameEntry"); window->LogDescriptionLabel=yon_gtk_builder_get_widget(builder,"LogDescriptionEntry"); window->LogStorageCombo=yon_gtk_builder_get_widget(builder,"LogStorageCombo"); @@ -1548,6 +1588,7 @@ journald_window *yon_journald_open(GtkWidget *self, main_window *widgets){ g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_close_subwindow),"JournaldWindow"); g_signal_connect(G_OBJECT(window->SaveButton),"clicked",G_CALLBACK(on_journald_save),window); + g_signal_connect(G_OBJECT(window->ResetButton),"clicked",G_CALLBACK(on_journald_reset),window); g_signal_connect(G_OBJECT(window->LogIntervalCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->LogIntervalSpin); g_signal_connect(G_OBJECT(window->LogIntervalCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->LogIntervalAmountCheck); @@ -1682,6 +1723,11 @@ void on_log_save(GtkWidget *self, dictionary *dict){ } int paths_size=0; config_str paths_parsed = yon_char_parse(paths,&paths_size,"\n"); + if (yon_char_parsed_check_repeats(paths_parsed,paths_size)){ + yon_ubl_status_highlight_incorrect(window->LogPathsBox); + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),REPEAT_PATHS_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + return; + } int pathse_size=0; config_str pathse_parsed = yon_char_parse(pathse,&pathse_size,"\n"); @@ -2200,7 +2246,9 @@ main_window *setup_window(){ config_str log = yon_char_parse(journals[i],&log_size,";"); log[1] = yon_char_replace(log[1],",","\n"); gtk_list_store_append(widgets->list,&iter); - free(yon_char_parse(log[1],&psize,"\n")); + config_str sfafa = yon_char_parse(log[1],&psize,"\n"); + if (sfafa) + free(sfafa); gtk_list_store_set(widgets->list,&iter,0,log[0],1,log[1],2,_(log[2]),3,1,4,psize,-1); } config_str services = yon_file_open(services_list_path,&service_size); diff --git a/source/ubl-settings-logging.h b/source/ubl-settings-logging.h index 1d338de..a518e55 100644 --- a/source/ubl-settings-logging.h +++ b/source/ubl-settings-logging.h @@ -246,6 +246,7 @@ typedef struct { GtkWidget *MainWindow; GtkWidget *CancelButton; GtkWidget *SaveButton; + GtkWidget *ResetButton; GtkWidget *LogNameLabel; GtkWidget *LogDescriptionLabel; GtkWidget *LogStorageCombo; diff --git a/source/ubl-strings.h b/source/ubl-strings.h index 2207240..06bf78e 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -101,6 +101,7 @@ #define DAYS_LABEL _("Days") #define WEEKS_LABEL _("Weeks") #define YEARS_LABEL _("Years") +#define RESET_LABEL _("Reset") //ubl-settings-logging-logrotate.glade #define LOGROTATE_LOG_JOURNAL_TAB_LABEL _("Log/Journal:") @@ -176,6 +177,7 @@ #define SUNDAY_LABEL _("Sunday*") #define REPEATED_PATHS_LABEL _("Same record already exists") #define EMPTY_IMPORTANT_LABEL _("Empty important field") +#define REPEAT_PATHS_LABEL _("Repeating paths") //ubl-settings-logging-logrotate-table.glade #define SYSTEM_CONFIGURATION_LABEL _("System configuration") diff --git a/ubl-settings-logging-filechooser.glade b/ubl-settings-logging-filechooser.glade index 28ddce1..3d0a484 100644 --- a/ubl-settings-logging-filechooser.glade +++ b/ubl-settings-logging-filechooser.glade @@ -33,7 +33,6 @@ Choose directory instead of file - True True False True diff --git a/ubl-settings-logging-journald.glade b/ubl-settings-logging-journald.glade index 28726b9..dd6c3a4 100644 --- a/ubl-settings-logging-journald.glade +++ b/ubl-settings-logging-journald.glade @@ -964,6 +964,20 @@ False end 5 + + + Reset + True + True + True + image5 + + + False + True + 0 + + Cancel @@ -975,7 +989,7 @@ True True - 0 + 1 @@ -989,7 +1003,7 @@ True True - 1 + 2 @@ -1048,4 +1062,9 @@ + + True + False + com.ublinux.ubl-settings-logging.funnel-symbolic + diff --git a/ubl-settings-logging-logrotate.glade b/ubl-settings-logging-logrotate.glade index 2b13c77..23fbfb5 100644 --- a/ubl-settings-logging-logrotate.glade +++ b/ubl-settings-logging-logrotate.glade @@ -318,6 +318,9 @@ True liststore1 False + + + Path diff --git a/ubl-settings-logging.pot b/ubl-settings-logging.pot index 419d0a9..21106d4 100644 --- a/ubl-settings-logging.pot +++ b/ubl-settings-logging.pot @@ -413,337 +413,345 @@ msgstr "" msgid "Years" msgstr "" -#: source/ubl-strings.h:106 -msgid "Log/Journal:" +#: source/ubl-strings.h:104 +msgid "Reset" msgstr "" #: source/ubl-strings.h:107 -msgid "Paths to log and journals files" +msgid "Log/Journal:" msgstr "" #: source/ubl-strings.h:108 -msgid "On" +msgid "Paths to log and journals files" msgstr "" #: source/ubl-strings.h:109 +msgid "On" +msgstr "" + +#: source/ubl-strings.h:110 msgid "Off" msgstr "" -#: source/ubl-strings.h:110 source/ubl-strings.h:164 +#: source/ubl-strings.h:111 source/ubl-strings.h:165 msgid "Scenarios" msgstr "" -#: source/ubl-strings.h:111 source/ubl-strings.h:163 +#: source/ubl-strings.h:112 source/ubl-strings.h:164 msgid "Scenarios are running for each rotated journal" msgstr "" -#: source/ubl-strings.h:112 +#: source/ubl-strings.h:113 msgid "Command before rotation (one time):" msgstr "" -#: source/ubl-strings.h:113 +#: source/ubl-strings.h:114 msgid "Command after rotation (one time):" msgstr "" -#: source/ubl-strings.h:114 +#: source/ubl-strings.h:115 msgid "Command before rotation:" msgstr "" -#: source/ubl-strings.h:115 +#: source/ubl-strings.h:116 msgid "Command after rotation:" msgstr "" -#: source/ubl-strings.h:116 +#: source/ubl-strings.h:117 msgid "Rotation period:" msgstr "" -#: source/ubl-strings.h:117 +#: source/ubl-strings.h:118 msgid "Maximum size of file:" msgstr "" -#: source/ubl-strings.h:118 +#: source/ubl-strings.h:119 msgid "Checking frequency configuration" msgstr "" -#: source/ubl-strings.h:119 +#: source/ubl-strings.h:120 msgid "File amount:" msgstr "" -#: source/ubl-strings.h:120 +#: source/ubl-strings.h:121 msgid "Store at:" msgstr "" -#: source/ubl-strings.h:121 +#: source/ubl-strings.h:122 msgid "Rotation as user:" msgstr "" -#: source/ubl-strings.h:122 +#: source/ubl-strings.h:123 msgid "Rotation as group:" msgstr "" -#: source/ubl-strings.h:123 +#: source/ubl-strings.h:124 msgid "Rotation configuration" msgstr "" -#: source/ubl-strings.h:124 +#: source/ubl-strings.h:125 msgid "Error processing:" msgstr "" -#: source/ubl-strings.h:125 +#: source/ubl-strings.h:126 msgid "Rotation of jurnal even when it is empty:" msgstr "" -#: source/ubl-strings.h:126 +#: source/ubl-strings.h:127 msgid "Do not rotate journal younger than" msgstr "" -#: source/ubl-strings.h:127 +#: source/ubl-strings.h:128 msgid "days" msgstr "" -#: source/ubl-strings.h:128 +#: source/ubl-strings.h:129 msgid "Delete rotated journals older than" msgstr "" -#: source/ubl-strings.h:129 +#: source/ubl-strings.h:130 msgid "Rotate journals if size more than" msgstr "" -#: source/ubl-strings.h:130 +#: source/ubl-strings.h:131 msgid "but not earlier than the specified time interval" msgstr "" -#: source/ubl-strings.h:131 +#: source/ubl-strings.h:132 msgid "before specified time interval" msgstr "" -#: source/ubl-strings.h:132 +#: source/ubl-strings.h:133 msgid "File choosing configuration" msgstr "" -#: source/ubl-strings.h:133 +#: source/ubl-strings.h:134 msgid "Create log" msgstr "" -#: source/ubl-strings.h:134 +#: source/ubl-strings.h:135 msgid "as user:" msgstr "" -#: source/ubl-strings.h:135 +#: source/ubl-strings.h:136 msgid "as group:" msgstr "" -#: source/ubl-strings.h:136 +#: source/ubl-strings.h:137 msgid "rules:" msgstr "" -#: source/ubl-strings.h:137 +#: source/ubl-strings.h:138 msgid "" "Cut source journal fileafter copy creating instead of moving old journal " "file and creating new one" msgstr "" -#: source/ubl-strings.h:138 +#: source/ubl-strings.h:139 msgid "Files and directories configuration" msgstr "" -#: source/ubl-strings.h:139 +#: source/ubl-strings.h:140 msgid "Delay compression by one journal in queue:" msgstr "" -#: source/ubl-strings.h:140 +#: source/ubl-strings.h:141 msgid "Compression configuration" msgstr "" -#: source/ubl-strings.h:141 +#: source/ubl-strings.h:142 msgid "Save original log file after rotation if it has specified extension:" msgstr "" -#: source/ubl-strings.h:142 +#: source/ubl-strings.h:143 msgid "Add date of rotation before log header" msgstr "" -#: source/ubl-strings.h:143 +#: source/ubl-strings.h:144 msgid "Number from which numbering of old logs will begin" msgstr "" -#: source/ubl-strings.h:144 +#: source/ubl-strings.h:145 msgid "Filename configuration" msgstr "" -#: source/ubl-strings.h:145 +#: source/ubl-strings.h:146 msgid "Email after rotation:" msgstr "" -#: source/ubl-strings.h:146 +#: source/ubl-strings.h:147 msgid "adress:" msgstr "" -#: source/ubl-strings.h:147 +#: source/ubl-strings.h:148 msgid "contents:" msgstr "" -#: source/ubl-strings.h:148 source/ubl-strings.h:161 +#: source/ubl-strings.h:149 source/ubl-strings.h:162 msgid "Message configuration" msgstr "" -#: source/ubl-strings.h:149 +#: source/ubl-strings.h:150 msgid "Manual input:" msgstr "" -#: source/ubl-strings.h:150 +#: source/ubl-strings.h:151 msgid "Log (-s) size:" msgstr "" -#: source/ubl-strings.h:151 +#: source/ubl-strings.h:152 msgid "Same directory" msgstr "" -#: source/ubl-strings.h:152 +#: source/ubl-strings.h:153 msgid "Separate directory" msgstr "" -#: source/ubl-strings.h:153 +#: source/ubl-strings.h:154 msgid "Output errors if log file does not exist*" msgstr "" -#: source/ubl-strings.h:154 +#: source/ubl-strings.h:155 msgid "Do not output errors if log file does not exist" msgstr "" -#: source/ubl-strings.h:155 +#: source/ubl-strings.h:156 msgid "Do not output" msgstr "" -#: source/ubl-strings.h:156 +#: source/ubl-strings.h:157 msgid "Output errors" msgstr "" -#: source/ubl-strings.h:157 +#: source/ubl-strings.h:158 msgid "Send Email" msgstr "" -#: source/ubl-strings.h:158 +#: source/ubl-strings.h:159 msgid "Don't send Email" msgstr "" -#: source/ubl-strings.h:159 +#: source/ubl-strings.h:160 msgid "First rotated copy" msgstr "" -#: source/ubl-strings.h:160 +#: source/ubl-strings.h:161 msgid "Last rotated copy" msgstr "" -#: source/ubl-strings.h:162 +#: source/ubl-strings.h:163 msgid "Endwork command:" msgstr "" -#: source/ubl-strings.h:165 +#: source/ubl-strings.h:166 msgid "Hourly" msgstr "" -#: source/ubl-strings.h:166 +#: source/ubl-strings.h:167 msgid "Daily" msgstr "" -#: source/ubl-strings.h:167 +#: source/ubl-strings.h:168 msgid "Weekly*" msgstr "" -#: source/ubl-strings.h:168 +#: source/ubl-strings.h:169 msgid "Monthly" msgstr "" -#: source/ubl-strings.h:169 +#: source/ubl-strings.h:170 msgid "Yearly" msgstr "" -#: source/ubl-strings.h:170 +#: source/ubl-strings.h:171 msgid "Monday" msgstr "" -#: source/ubl-strings.h:171 +#: source/ubl-strings.h:172 msgid "Tuesday" msgstr "" -#: source/ubl-strings.h:172 +#: source/ubl-strings.h:173 msgid "Wednesday" msgstr "" -#: source/ubl-strings.h:173 +#: source/ubl-strings.h:174 msgid "Thursday" msgstr "" -#: source/ubl-strings.h:174 +#: source/ubl-strings.h:175 msgid "Friday" msgstr "" -#: source/ubl-strings.h:175 +#: source/ubl-strings.h:176 msgid "Saturday" msgstr "" -#: source/ubl-strings.h:176 +#: source/ubl-strings.h:177 msgid "Sunday*" msgstr "" -#: source/ubl-strings.h:177 +#: source/ubl-strings.h:178 msgid "Same record already exists" msgstr "" -#: source/ubl-strings.h:178 +#: source/ubl-strings.h:179 msgid "Empty important field" msgstr "" -#: source/ubl-strings.h:181 +#: source/ubl-strings.h:180 +msgid "Repeating paths" +msgstr "" + +#: source/ubl-strings.h:183 msgid "System configuration" msgstr "" -#: source/ubl-strings.h:182 +#: source/ubl-strings.h:184 msgid "Applications configuration" msgstr "" -#: source/ubl-strings.h:185 +#: source/ubl-strings.h:187 msgid "Path (-s):" msgstr "" -#: source/ubl-strings.h:186 +#: source/ubl-strings.h:188 msgid "Control:" msgstr "" -#: source/ubl-strings.h:187 +#: source/ubl-strings.h:189 msgid "Log file" msgstr "" -#: source/ubl-strings.h:188 +#: source/ubl-strings.h:190 msgid "Name:" msgstr "" -#: source/ubl-strings.h:191 +#: source/ubl-strings.h:193 msgid "Owner rules" msgstr "" -#: source/ubl-strings.h:192 +#: source/ubl-strings.h:194 msgid "Group rules" msgstr "" -#: source/ubl-strings.h:193 +#: source/ubl-strings.h:195 msgid "Public rules" msgstr "" -#: source/ubl-strings.h:194 +#: source/ubl-strings.h:196 msgid "Read" msgstr "" -#: source/ubl-strings.h:195 +#: source/ubl-strings.h:197 msgid "Write" msgstr "" -#: source/ubl-strings.h:196 +#: source/ubl-strings.h:198 msgid "Execute" msgstr "" -#: source/ubl-strings.h:197 +#: source/ubl-strings.h:199 msgid "Value:" msgstr "" diff --git a/ubl-settings-logging_ru.po b/ubl-settings-logging_ru.po index 1ffaaf0..5a22a2e 100644 --- a/ubl-settings-logging_ru.po +++ b/ubl-settings-logging_ru.po @@ -423,131 +423,135 @@ msgstr "Недель" msgid "Years" msgstr "Лет" -#: source/ubl-strings.h:106 +#: source/ubl-strings.h:104 +msgid "Reset" +msgstr "По умлочанию" + +#: source/ubl-strings.h:107 msgid "Log/Journal:" msgstr "Лог/Журнал:" -#: source/ubl-strings.h:107 +#: source/ubl-strings.h:108 msgid "Paths to log and journals files" msgstr "Пути к файлам лога/журнала" -#: source/ubl-strings.h:108 +#: source/ubl-strings.h:109 msgid "On" msgstr "Включено" -#: source/ubl-strings.h:109 +#: source/ubl-strings.h:110 msgid "Off" msgstr "Выключено" -#: source/ubl-strings.h:110 source/ubl-strings.h:164 +#: source/ubl-strings.h:111 source/ubl-strings.h:165 msgid "Scenarios" msgstr "Сценарии" -#: source/ubl-strings.h:111 source/ubl-strings.h:163 +#: source/ubl-strings.h:112 source/ubl-strings.h:164 msgid "Scenarios are running for each rotated journal" msgstr "Сценарии запускаются для каждого ротируемого журнала" -#: source/ubl-strings.h:112 +#: source/ubl-strings.h:113 msgid "Command before rotation (one time):" msgstr "Команда перед ротацией (один раз):" -#: source/ubl-strings.h:113 +#: source/ubl-strings.h:114 msgid "Command after rotation (one time):" msgstr "Команда после ротации (один раз):" -#: source/ubl-strings.h:114 +#: source/ubl-strings.h:115 msgid "Command before rotation:" msgstr "Команда перед ротацией:" -#: source/ubl-strings.h:115 +#: source/ubl-strings.h:116 msgid "Command after rotation:" msgstr "Команда после ротации:" -#: source/ubl-strings.h:116 +#: source/ubl-strings.h:117 msgid "Rotation period:" msgstr "Период ротации:" -#: source/ubl-strings.h:117 +#: source/ubl-strings.h:118 msgid "Maximum size of file:" msgstr "Максимальный размер файла:" -#: source/ubl-strings.h:118 +#: source/ubl-strings.h:119 msgid "Checking frequency configuration" msgstr "Настройки частоты проверки" -#: source/ubl-strings.h:119 +#: source/ubl-strings.h:120 msgid "File amount:" msgstr "Количество файлов:" -#: source/ubl-strings.h:120 +#: source/ubl-strings.h:121 msgid "Store at:" msgstr "Хранить в:" -#: source/ubl-strings.h:121 +#: source/ubl-strings.h:122 msgid "Rotation as user:" msgstr "Ротация от пользователя:" -#: source/ubl-strings.h:122 +#: source/ubl-strings.h:123 msgid "Rotation as group:" msgstr "Ротация от группы:" -#: source/ubl-strings.h:123 +#: source/ubl-strings.h:124 msgid "Rotation configuration" msgstr "Настройки ротации" -#: source/ubl-strings.h:124 +#: source/ubl-strings.h:125 msgid "Error processing:" msgstr "Обработка ошибок:" -#: source/ubl-strings.h:125 +#: source/ubl-strings.h:126 msgid "Rotation of jurnal even when it is empty:" msgstr "Ротация файла журнала даже если он пуст:" -#: source/ubl-strings.h:126 +#: source/ubl-strings.h:127 msgid "Do not rotate journal younger than" msgstr "Не ротировать журналы, возраст которых меньше" -#: source/ubl-strings.h:127 +#: source/ubl-strings.h:128 msgid "days" msgstr "дней" -#: source/ubl-strings.h:128 +#: source/ubl-strings.h:129 msgid "Delete rotated journals older than" msgstr "Удалить ротированные журналы старше" -#: source/ubl-strings.h:129 +#: source/ubl-strings.h:130 msgid "Rotate journals if size more than" msgstr "Ротация журналов, если размер превышает" -#: source/ubl-strings.h:130 +#: source/ubl-strings.h:131 msgid "but not earlier than the specified time interval" msgstr "но не раньше указанного интервала времени" -#: source/ubl-strings.h:131 +#: source/ubl-strings.h:132 msgid "before specified time interval" msgstr "до истечения указанного интервала времени" -#: source/ubl-strings.h:132 +#: source/ubl-strings.h:133 msgid "File choosing configuration" msgstr "Настройки выбора файла" -#: source/ubl-strings.h:133 +#: source/ubl-strings.h:134 msgid "Create log" msgstr "Создавать лог" -#: source/ubl-strings.h:134 +#: source/ubl-strings.h:135 msgid "as user:" msgstr "от пользователя:" -#: source/ubl-strings.h:135 +#: source/ubl-strings.h:136 msgid "as group:" msgstr "от группы:" -#: source/ubl-strings.h:136 +#: source/ubl-strings.h:137 msgid "rules:" msgstr "права:" -#: source/ubl-strings.h:137 +#: source/ubl-strings.h:138 msgid "" "Cut source journal fileafter copy creating instead of moving old journal " "file and creating new one" @@ -555,209 +559,213 @@ msgstr "" "После создания копии, обрезать исходный файл журнала взамен перемещения " "старого файла журнала и создания нового" -#: source/ubl-strings.h:138 +#: source/ubl-strings.h:139 msgid "Files and directories configuration" msgstr "Настройки файлов и папок" -#: source/ubl-strings.h:139 +#: source/ubl-strings.h:140 msgid "Delay compression by one journal in queue:" msgstr "Отложить сжание на один журнал в очереди:" -#: source/ubl-strings.h:140 +#: source/ubl-strings.h:141 msgid "Compression configuration" msgstr "Настройка сжатия" -#: source/ubl-strings.h:141 +#: source/ubl-strings.h:142 msgid "Save original log file after rotation if it has specified extension:" msgstr "" "Сохранять оригинальный лог после ротации, если у него указано расширение:" -#: source/ubl-strings.h:142 +#: source/ubl-strings.h:143 msgid "Add date of rotation before log header" msgstr "Добавлять дату ротации перед заголовком старого лога:" -#: source/ubl-strings.h:143 +#: source/ubl-strings.h:144 msgid "Number from which numbering of old logs will begin" msgstr "Номер, с которого будет начата нумерация старых логов:" -#: source/ubl-strings.h:144 +#: source/ubl-strings.h:145 msgid "Filename configuration" msgstr "Настройка имени файлов" -#: source/ubl-strings.h:145 +#: source/ubl-strings.h:146 msgid "Email after rotation:" msgstr "Отправка Email после ротации:" -#: source/ubl-strings.h:146 +#: source/ubl-strings.h:147 msgid "adress:" msgstr "на адрес:" -#: source/ubl-strings.h:147 +#: source/ubl-strings.h:148 msgid "contents:" msgstr "содержимое:" -#: source/ubl-strings.h:148 source/ubl-strings.h:161 +#: source/ubl-strings.h:149 source/ubl-strings.h:162 msgid "Message configuration" msgstr "Настройка сообщения" -#: source/ubl-strings.h:149 +#: source/ubl-strings.h:150 msgid "Manual input:" msgstr "Команды настройки" -#: source/ubl-strings.h:150 +#: source/ubl-strings.h:151 msgid "Log (-s) size:" msgstr "Общий размер лога (-ов):" -#: source/ubl-strings.h:151 +#: source/ubl-strings.h:152 msgid "Same directory" msgstr "Той же папке" -#: source/ubl-strings.h:152 +#: source/ubl-strings.h:153 msgid "Separate directory" msgstr "Другой папке" -#: source/ubl-strings.h:153 +#: source/ubl-strings.h:154 msgid "Output errors if log file does not exist*" msgstr "Выводить ошибки, если лог файла не существует*" -#: source/ubl-strings.h:154 +#: source/ubl-strings.h:155 msgid "Do not output errors if log file does not exist" msgstr "Не выводить ошибки, если лог файла не существует" -#: source/ubl-strings.h:155 +#: source/ubl-strings.h:156 msgid "Do not output" msgstr "Не выводить" -#: source/ubl-strings.h:156 +#: source/ubl-strings.h:157 msgid "Output errors" msgstr "Выводить ошибки" -#: source/ubl-strings.h:157 +#: source/ubl-strings.h:158 msgid "Send Email" msgstr "Отправлять Email" -#: source/ubl-strings.h:158 +#: source/ubl-strings.h:159 msgid "Don't send Email" msgstr "Не отправлять Email" -#: source/ubl-strings.h:159 +#: source/ubl-strings.h:160 msgid "First rotated copy" msgstr "Первая ротированная копия" -#: source/ubl-strings.h:160 +#: source/ubl-strings.h:161 msgid "Last rotated copy" msgstr "Последняя ротированная копия" -#: source/ubl-strings.h:162 +#: source/ubl-strings.h:163 msgid "Endwork command:" msgstr "Команда перед удалением файла журнала:" -#: source/ubl-strings.h:165 +#: source/ubl-strings.h:166 #, fuzzy msgid "Hourly" msgstr "Час" -#: source/ubl-strings.h:166 +#: source/ubl-strings.h:167 msgid "Daily" msgstr "День" -#: source/ubl-strings.h:167 +#: source/ubl-strings.h:168 msgid "Weekly*" msgstr "Неделя*" -#: source/ubl-strings.h:168 +#: source/ubl-strings.h:169 msgid "Monthly" msgstr "Месяц" -#: source/ubl-strings.h:169 +#: source/ubl-strings.h:170 msgid "Yearly" msgstr "Год" -#: source/ubl-strings.h:170 +#: source/ubl-strings.h:171 msgid "Monday" msgstr "Понедельник" -#: source/ubl-strings.h:171 +#: source/ubl-strings.h:172 msgid "Tuesday" msgstr "Вторник" -#: source/ubl-strings.h:172 +#: source/ubl-strings.h:173 msgid "Wednesday" msgstr "Среда" -#: source/ubl-strings.h:173 +#: source/ubl-strings.h:174 msgid "Thursday" msgstr "Четверг" -#: source/ubl-strings.h:174 +#: source/ubl-strings.h:175 msgid "Friday" msgstr "Пятница" -#: source/ubl-strings.h:175 +#: source/ubl-strings.h:176 msgid "Saturday" msgstr "Суббота" -#: source/ubl-strings.h:176 +#: source/ubl-strings.h:177 msgid "Sunday*" msgstr "Воскресенье*" -#: source/ubl-strings.h:177 +#: source/ubl-strings.h:178 msgid "Same record already exists" msgstr "Такая запись уже существует" -#: source/ubl-strings.h:178 +#: source/ubl-strings.h:179 msgid "Empty important field" msgstr "Важное поле не заполнено" -#: source/ubl-strings.h:181 +#: source/ubl-strings.h:180 +msgid "Repeating paths" +msgstr "Повторяющиеся пути" + +#: source/ubl-strings.h:183 msgid "System configuration" msgstr "Настройки системы" -#: source/ubl-strings.h:182 +#: source/ubl-strings.h:184 msgid "Applications configuration" msgstr "Настройки приложений" -#: source/ubl-strings.h:185 +#: source/ubl-strings.h:187 msgid "Path (-s):" msgstr "Путь (-и):" -#: source/ubl-strings.h:186 +#: source/ubl-strings.h:188 msgid "Control:" msgstr "Управление:" -#: source/ubl-strings.h:187 +#: source/ubl-strings.h:189 msgid "Log file" msgstr "Файл лога" -#: source/ubl-strings.h:188 +#: source/ubl-strings.h:190 msgid "Name:" msgstr "Имя:" -#: source/ubl-strings.h:191 +#: source/ubl-strings.h:193 msgid "Owner rules" msgstr "Правила владельца" -#: source/ubl-strings.h:192 +#: source/ubl-strings.h:194 msgid "Group rules" msgstr "Правила группы" -#: source/ubl-strings.h:193 +#: source/ubl-strings.h:195 msgid "Public rules" msgstr "Правила остальных" -#: source/ubl-strings.h:194 +#: source/ubl-strings.h:196 msgid "Read" msgstr "Чтение" -#: source/ubl-strings.h:195 +#: source/ubl-strings.h:197 msgid "Write" msgstr "Запись" -#: source/ubl-strings.h:196 +#: source/ubl-strings.h:198 msgid "Execute" msgstr "Исполнение" -#: source/ubl-strings.h:197 +#: source/ubl-strings.h:199 msgid "Value:" msgstr "Значение:"