Install: copy all staging root files via directory iteration
All checks were successful
Build / Build (push) Successful in 18s
All checks were successful
Build / Build (push) Successful in 18s
Made-with: Cursor
This commit is contained in:
@@ -113,6 +113,38 @@ void install_combine_path(char *result, size_t size, const char *base, const cha
|
||||
}
|
||||
}
|
||||
|
||||
/* Copy every regular file at staging root to dst_root; subdirs and volume labels skipped. */
|
||||
int install_copy_staging_root_files(const char *staging, const char *dst_root) {
|
||||
DIR dir;
|
||||
FILINFO fno;
|
||||
char src_full[256];
|
||||
char dst_full[256];
|
||||
int res = f_opendir(&dir, staging);
|
||||
if (res != FR_OK)
|
||||
return res;
|
||||
|
||||
while (1) {
|
||||
res = f_readdir(&dir, &fno);
|
||||
if (res != FR_OK || fno.fname[0] == 0)
|
||||
break;
|
||||
if (fno.fname[0] == '.' && (fno.fname[1] == '\0' || (fno.fname[1] == '.' && fno.fname[2] == '\0')))
|
||||
continue;
|
||||
if (fno.fattrib & (AM_DIR | AM_VOL))
|
||||
continue;
|
||||
|
||||
install_combine_path(src_full, sizeof(src_full), staging, fno.fname);
|
||||
install_combine_path(dst_full, sizeof(dst_full), dst_root, fno.fname);
|
||||
res = file_copy(src_full, dst_full);
|
||||
if (res != FR_OK) {
|
||||
f_closedir(&dir);
|
||||
return res;
|
||||
}
|
||||
}
|
||||
|
||||
f_closedir(&dir);
|
||||
return FR_OK;
|
||||
}
|
||||
|
||||
// Recursive folder copy with progress tracking
|
||||
static int folder_copy_progress_recursive(const char *src, const char *dst, int *copied, int total, u32 start_x, u32 start_y, const char *display_name, int *last_percent) {
|
||||
DIR dir;
|
||||
|
||||
Reference in New Issue
Block a user