Changeset 1ec732a in mainline
- Timestamp:
- 2025-11-28T20:40:11Z (6 weeks ago)
- Branches:
- master
- Children:
- 144fafd
- Parents:
- 3a4c6d9
- Location:
- uspace
- Files:
-
- 15 added
- 18 edited
-
app/meson.build (modified) (1 diff)
-
app/nav/dlg/progress.c (modified) (2 diffs)
-
app/nav/dlg/progress.h (modified) (2 diffs)
-
app/nav/dlg/verifydlg.c (added)
-
app/nav/dlg/verifydlg.h (added)
-
app/nav/menu.c (modified) (3 diffs)
-
app/nav/menu.h (modified) (1 diff)
-
app/nav/meson.build (modified) (3 diffs)
-
app/nav/nav.c (modified) (5 diffs)
-
app/nav/newfile.c (modified) (1 diff)
-
app/nav/types/dlg/progress.h (modified) (1 diff)
-
app/nav/types/dlg/verifydlg.h (added)
-
app/nav/types/menu.h (modified) (1 diff)
-
app/nav/types/verify.h (added)
-
app/nav/verify.c (added)
-
app/nav/verify.h (added)
-
app/newfile/newfile.c (modified) (1 diff)
-
app/verify/doc/doxygroups.h (added)
-
app/verify/meson.build (added)
-
app/verify/verify.c (added)
-
lib/fmgt/include/fmgt.h (modified) (1 diff)
-
lib/fmgt/include/fmgt/flist.h (added)
-
lib/fmgt/include/fmgt/newfile.h (modified) (1 diff)
-
lib/fmgt/include/fmgt/verify.h (added)
-
lib/fmgt/include/fmgt/walk.h (added)
-
lib/fmgt/include/types/fmgt.h (modified) (4 diffs)
-
lib/fmgt/meson.build (modified) (1 diff)
-
lib/fmgt/private/fmgt.h (modified) (1 diff)
-
lib/fmgt/src/flist.c (added)
-
lib/fmgt/src/fmgt.c (modified) (2 diffs)
-
lib/fmgt/src/newfile.c (modified) (3 diffs)
-
lib/fmgt/src/verify.c (added)
-
lib/fmgt/src/walk.c (added)
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/meson.build
r3a4c6d9 r1ec732a 103 103 'usbinfo', 104 104 'viewer', 105 'verify', 105 106 'vol', 106 107 'vuhid', -
uspace/app/nav/dlg/progress.c
r3a4c6d9 r1ec732a 134 134 /* FIXME: Auto layout */ 135 135 if (ui_is_textmode(ui)) { 136 rect.p0.x = 3;136 rect.p0.x = 1; 137 137 rect.p0.y = 2; 138 rect.p1.x = 4 7;138 rect.p1.x = 49; 139 139 rect.p1.y = 3; 140 } else { 141 rect.p0.x = 10; 142 rect.p0.y = 35; 143 rect.p1.x = 390; 144 rect.p1.y = 50; 145 } 146 147 ui_label_set_rect(label, &rect); 148 ui_label_set_halign(label, gfx_halign_center); 149 150 rc = ui_fixed_add(fixed, ui_label_ctl(label)); 151 if (rc != EOK) 152 goto error; 153 154 dialog->ltotal_prog = label; 155 label = NULL; 156 157 rc = ui_label_create(ui_res, "XXX of XXX (XXX%)", &label); 158 if (rc != EOK) 159 goto error; 160 161 /* FIXME: Auto layout */ 162 if (ui_is_textmode(ui)) { 163 rect.p0.x = 1; 164 rect.p0.y = 4; 165 rect.p1.x = 49; 166 rect.p1.y = 5; 140 167 } else { 141 168 rect.p0.x = 10; … … 240 267 * 241 268 * @param dialog Progress dialog 242 * @param text New text for current file progress269 * @param progress Progress 243 270 * 244 271 * @return EOK on success or an error code 245 272 */ 246 errno_t progress_dlg_set_curf_prog(progress_dlg_t *dialog, const char *text) 247 { 273 errno_t progress_dlg_set_progress(progress_dlg_t *dialog, 274 fmgt_progress_t *progress) 275 { 276 char buf[128]; 248 277 errno_t rc; 249 278 250 rc = ui_label_set_text(dialog->lcurf_prog, text); 279 snprintf(buf, sizeof(buf), "Total: %s files, %s.", 280 progress->total_procf, progress->total_procb); 281 282 rc = ui_label_set_text(dialog->ltotal_prog, buf); 251 283 if (rc != EOK) 252 284 return rc; 253 285 254 return ui_label_paint(dialog->lcurf_prog); 286 rc = ui_label_paint(dialog->ltotal_prog); 287 if (rc != EOK) 288 return rc; 289 290 snprintf(buf, sizeof(buf), "Current file: %s of %s (%s done).", 291 progress->curf_procb, progress->curf_totalb, 292 progress->curf_percent); 293 294 rc = ui_label_set_text(dialog->lcurf_prog, buf); 295 if (rc != EOK) 296 return rc; 297 298 rc = ui_label_paint(dialog->lcurf_prog); 299 if (rc != EOK) 300 return rc; 301 302 return EOK; 255 303 } 256 304 -
uspace/app/nav/dlg/progress.h
r3a4c6d9 r1ec732a 38 38 39 39 #include <errno.h> 40 #include <fmgt.h> 40 41 #include <types/ui/ui.h> 41 42 #include "../types/dlg/progress.h" … … 46 47 extern void progress_dlg_set_cb(progress_dlg_t *, progress_dlg_cb_t *, 47 48 void *); 48 extern errno_t progress_dlg_set_ curf_prog(progress_dlg_t *, const char*);49 extern errno_t progress_dlg_set_progress(progress_dlg_t *, fmgt_progress_t *); 49 50 extern void progress_dlg_destroy(progress_dlg_t *); 50 51 -
uspace/app/nav/menu.c
r3a4c6d9 r1ec732a 57 57 ui_menu_entry_t *mopen; 58 58 ui_menu_entry_t *medit; 59 ui_menu_entry_t *mverify; 59 60 ui_menu_entry_t *mfsep; 60 61 ui_menu_entry_t *mexit; … … 97 98 ui_menu_entry_set_cb(medit, nav_menu_file_edit, (void *) menu); 98 99 100 rc = ui_menu_entry_create(mfile, "~V~erify", "Ctrl-V", &mverify); 101 if (rc != EOK) 102 goto error; 103 104 ui_menu_entry_set_cb(mverify, nav_menu_file_verify, (void *) menu); 105 99 106 rc = ui_menu_entry_sep_create(mfile, &mfsep); 100 107 if (rc != EOK) … … 194 201 } 195 202 203 /** File / Verify menu entry selected. 204 * 205 * @param mentry Menu entry 206 * @param arg Argument (navigator_t *) 207 */ 208 void nav_menu_file_verify(ui_menu_entry_t *mentry, void *arg) 209 { 210 nav_menu_t *menu = (nav_menu_t *)arg; 211 212 if (menu->cb != NULL && menu->cb->file_verify != NULL) 213 menu->cb->file_verify(menu->cb_arg); 214 } 215 196 216 /** File / Exit menu entry selected. 197 217 * -
uspace/app/nav/menu.h
r3a4c6d9 r1ec732a 49 49 extern void nav_menu_file_open(ui_menu_entry_t *, void *); 50 50 extern void nav_menu_file_edit(ui_menu_entry_t *, void *); 51 extern void nav_menu_file_verify(ui_menu_entry_t *, void *); 51 52 extern void nav_menu_file_exit(ui_menu_entry_t *, void *); 52 53 -
uspace/app/nav/meson.build
r3a4c6d9 r1ec732a 32 32 'dlg/newfiledlg.c', 33 33 'dlg/progress.c', 34 'dlg/verifydlg.c', 34 35 'main.c', 35 36 'menu.c', … … 37 38 'newfile.c', 38 39 'panel.c', 40 'verify.c', 39 41 ) 40 42 … … 43 45 'dlg/newfiledlg.c', 44 46 'dlg/progress.c', 47 'dlg/verifydlg.c', 45 48 'menu.c', 46 49 'nav.c', 47 50 'newfile.c', 48 51 'panel.c', 52 'verify.c', 49 53 'test/main.c', 50 54 'test/menu.c', -
uspace/app/nav/nav.c
r3a4c6d9 r1ec732a 53 53 #include "nav.h" 54 54 #include "panel.h" 55 #include "verify.h" 55 56 56 57 #define EDITOR_CMD "/app/edit" … … 67 68 static void navigator_file_open(void *); 68 69 static void navigator_file_edit(void *); 70 static void navigator_file_verify(void *); 69 71 static void navigator_file_exit(void *); 70 72 … … 73 75 .file_open = navigator_file_open, 74 76 .file_edit = navigator_file_edit, 77 .file_verify = navigator_file_verify, 75 78 .file_exit = navigator_file_exit 76 79 }; … … 135 138 navigator_file_edit((void *)navigator); 136 139 break; 140 case KC_V: 141 navigator_file_verify((void *)navigator); 142 break; 137 143 case KC_Q: 138 144 ui_quit(navigator->ui); … … 526 532 } 527 533 534 /** File / Verify menu entry selected */ 535 static void navigator_file_verify(void *arg) 536 { 537 navigator_t *navigator = (navigator_t *)arg; 538 539 ui_file_list_entry_t *entry; 540 ui_file_list_entry_attr_t attr; 541 fmgt_flist_t *flist; 542 panel_t *panel; 543 errno_t rc; 544 545 panel = navigator_get_active_panel(navigator); 546 entry = ui_file_list_get_cursor(panel->flist); 547 ui_file_list_entry_get_attr(entry, &attr); 548 549 rc = fmgt_flist_create(&flist); 550 if (rc != EOK) 551 return; 552 553 rc = fmgt_flist_append(flist, attr.name); 554 if (rc != EOK) { 555 fmgt_flist_destroy(flist); 556 return; 557 } 558 559 /* flist ownership transferred */ 560 navigator_verify_dlg(navigator, flist); 561 } 562 528 563 /** File / Exit menu entry selected */ 529 564 static void navigator_file_exit(void *arg) -
uspace/app/nav/newfile.c
r3a4c6d9 r1ec732a 259 259 { 260 260 navigator_t *nav = (navigator_t *)arg; 261 char buf[128]; 262 263 snprintf(buf, sizeof(buf), "Written %s of %s (%s done).", 264 progress->curf_procb, progress->curf_totalb, 265 progress->curf_percent); 266 progress_dlg_set_curf_prog(nav->progress_dlg, buf); 261 262 progress_dlg_set_progress(nav->progress_dlg, progress); 267 263 } 268 264 -
uspace/app/nav/types/dlg/progress.h
r3a4c6d9 r1ec732a 46 46 /** Dialog window */ 47 47 ui_window_t *window; 48 /** Label with total progress */ 49 ui_label_t *ltotal_prog; 48 50 /** Label with current file progress */ 49 51 ui_label_t *lcurf_prog; -
uspace/app/nav/types/menu.h
r3a4c6d9 r1ec732a 49 49 /** File / Edit */ 50 50 void (*file_edit)(void *); 51 /** File / Verify */ 52 void (*file_verify)(void *); 51 53 /** File / Exit */ 52 54 void (*file_exit)(void *); -
uspace/app/newfile/newfile.c
r3a4c6d9 r1ec732a 241 241 } 242 242 243 (void)nonint;244 (void)quiet;245 (void)sparse;246 247 243 if (fsize != NULL) { 248 244 rc = capa_parse(fsize, &fcap); -
uspace/lib/fmgt/include/fmgt.h
r3a4c6d9 r1ec732a 42 42 #include <stddef.h> 43 43 #include <stdint.h> 44 #include "fmgt/flist.h" 44 45 #include "fmgt/newfile.h" 46 #include "fmgt/verify.h" 45 47 #include "types/fmgt.h" 46 48 -
uspace/lib/fmgt/include/fmgt/newfile.h
r3a4c6d9 r1ec732a 32 32 /** 33 33 * @file 34 * @brief File management library - creatingnew files.34 * @brief Create new files. 35 35 */ 36 36 -
uspace/lib/fmgt/include/types/fmgt.h
r3a4c6d9 r1ec732a 38 38 #define TYPES_FMGT_H 39 39 40 #include <adt/list.h> 40 41 #include <capa.h> 41 42 #include <errno.h> 42 43 #include <fibril_synch.h> 43 44 #include <stdbool.h> 45 46 #define FMGT_FILE_COUNT_BUFSIZE 16 44 47 45 48 /** File management progress update */ … … 51 54 /** Percent of current file processed */ 52 55 char curf_percent[5]; 56 /** Total number of bytes processed */ 57 char total_procb[CAPA_BLOCKS_BUFSIZE]; 58 /** Number of files processed */ 59 char total_procf[FMGT_FILE_COUNT_BUFSIZE]; 53 60 } fmgt_progress_t; 54 61 … … 101 108 /** Progress was displayed for current file */ 102 109 bool curf_progr; 110 /** Total number of processed bytes */ 111 uint64_t total_procb; 112 /** Total number of processed files */ 113 unsigned total_procf; 103 114 /** Post an immediate initial progress update */ 104 115 bool do_init_update; 105 116 } fmgt_t; 106 117 107 /** New file flags .*/118 /** New file flags */ 108 119 typedef enum { 109 120 nf_none = 0x0, … … 111 122 } fmgt_nf_flags_t; 112 123 124 /** File list */ 125 typedef struct { 126 /** List of fmgt_flist_entry_t */ 127 list_t files; 128 } fmgt_flist_t; 129 130 /** File list entry */ 131 typedef struct { 132 /** Containing file list */ 133 fmgt_flist_t *flist; 134 /** Link to flist->files */ 135 link_t lfiles; 136 /** File name */ 137 char *fname; 138 } fmgt_flist_entry_t; 139 140 /** File system tree walk callbacks */ 141 typedef struct { 142 errno_t (*dir_enter)(void *, const char *); 143 errno_t (*dir_leave)(void *, const char *); 144 errno_t (*file)(void *, const char *); 145 } fmgt_walk_cb_t; 146 147 /** File system tree walk parameters */ 148 typedef struct { 149 /** List of files or directories (walk roots) */ 150 fmgt_flist_t *flist; 151 /** Callbacks */ 152 fmgt_walk_cb_t *cb; 153 /** Callback argument */ 154 void *arg; 155 } fmgt_walk_params_t; 156 113 157 #endif 114 158 -
uspace/lib/fmgt/meson.build
r3a4c6d9 r1ec732a 28 28 29 29 src = files( 30 'src/flist.c', 30 31 'src/fmgt.c', 31 'src/newfile.c' 32 'src/newfile.c', 33 'src/verify.c', 34 'src/walk.c' 32 35 ) 33 36 -
uspace/lib/fmgt/private/fmgt.h
r3a4c6d9 r1ec732a 47 47 extern bool fmgt_abort_query(fmgt_t *); 48 48 extern fmgt_error_action_t fmgt_io_error_query(fmgt_t *, fmgt_io_error_t *); 49 extern void fmgt_progress_init(fmgt_t *); 50 extern void fmgt_progress_init_file(fmgt_t *, const char *); 51 extern void fmgt_progress_incr_bytes(fmgt_t *, uint64_t); 52 extern void fmgt_progress_incr_files(fmgt_t *); 49 53 extern void fmgt_initial_progress_update(fmgt_t *); 50 54 extern void fmgt_final_progress_update(fmgt_t *); -
uspace/lib/fmgt/src/fmgt.c
r3a4c6d9 r1ec732a 104 104 } 105 105 106 /** Initialize progress counters at beginning of operation. 107 * 108 * @param fmgt File management object 109 */ 110 void fmgt_progress_init(fmgt_t *fmgt) 111 { 112 fmgt->total_procf = 0; 113 fmgt->total_procb = 0; 114 115 fmgt->curf_procb = 0; 116 fmgt->curf_totalb = 0; 117 fmgt->curf_progr = false; 118 } 119 120 /** Initialize progress counters at beginning of processing a file. 121 * 122 * @param fmgt File management object 123 * @param fname File name 124 */ 125 void fmgt_progress_init_file(fmgt_t *fmgt, const char *fname) 126 { 127 vfs_stat_t stat; 128 errno_t rc; 129 130 fmgt->curf_procb = 0; 131 fmgt->curf_totalb = 0; 132 133 rc = vfs_stat_path(fname, &stat); 134 if (rc == EOK) 135 fmgt->curf_totalb = stat.size; 136 } 137 138 /** Increase count of processed bytes. 139 * 140 * @param fmgt File management object 141 * @param nbytes Number of newly processed bytes 142 */ 143 void fmgt_progress_incr_bytes(fmgt_t *fmgt, uint64_t nbytes) 144 { 145 fmgt->curf_procb += nbytes; 146 fmgt->total_procb += nbytes; 147 } 148 149 /** Increase count of processed files. 150 * 151 * @parma fmgt File management object 152 */ 153 void fmgt_progress_incr_files(fmgt_t *fmgt) 154 { 155 ++fmgt->total_procf; 156 } 157 106 158 /** Get progress update report. 107 159 * … … 124 176 snprintf(progress->curf_percent, sizeof(progress->curf_percent), "%u%%", 125 177 percent); 178 snprintf(progress->total_procf, sizeof(progress->total_procf), "%u", 179 fmgt->total_procf); 180 capa_blocks_format_buf(fmgt->total_procb, 1, progress->total_procb, 181 sizeof(progress->total_procb)); 126 182 } 127 183 -
uspace/lib/fmgt/src/newfile.c
r3a4c6d9 r1ec732a 30 30 * @{ 31 31 */ 32 /** @file File management library - creatingnew files.32 /** @file Create new files. 33 33 */ 34 34 … … 109 109 } 110 110 111 fmgt->curf_procb = 0; 112 fmgt->curf_totalb = fsize; 113 fmgt->curf_progr = false; 114 fmgt_timer_start(fmgt); 115 111 /* Clear statistics. */ 112 fmgt_progress_init(fmgt); 116 113 fmgt_initial_progress_update(fmgt); 117 114 … … 149 146 } 150 147 151 fmgt ->curf_procb += nw;148 fmgt_progress_incr_bytes(fmgt, nw); 152 149 153 150 /* User requested abort? */
Note:
See TracChangeset
for help on using the changeset viewer.
