Changeset 1ec732a in mainline for uspace/lib/fmgt
- Timestamp:
- 2025-11-28T20:40:11Z (3 months ago)
- Branches:
- master
- Children:
- 144fafd
- Parents:
- 3a4c6d9
- Location:
- uspace/lib/fmgt
- Files:
-
- 6 added
- 7 edited
-
include/fmgt.h (modified) (1 diff)
-
include/fmgt/flist.h (added)
-
include/fmgt/newfile.h (modified) (1 diff)
-
include/fmgt/verify.h (added)
-
include/fmgt/walk.h (added)
-
include/types/fmgt.h (modified) (4 diffs)
-
meson.build (modified) (1 diff)
-
private/fmgt.h (modified) (1 diff)
-
src/flist.c (added)
-
src/fmgt.c (modified) (2 diffs)
-
src/newfile.c (modified) (3 diffs)
-
src/verify.c (added)
-
src/walk.c (added)
Legend:
- Unmodified
- Added
- Removed
-
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.
