Changeset f9c30b9a in mainline
- Timestamp:
- 2026-02-11T18:02:17Z (34 hours ago)
- Branches:
- master
- Children:
- cd0dce3
- Parents:
- 59ed424e
- Location:
- uspace
- Files:
-
- 13 added
- 18 edited
-
app/copy/copy.c (modified) (1 diff)
-
app/meson.build (modified) (2 diffs)
-
app/move/doc/doxygroups.h (added)
-
app/move/meson.build (added)
-
app/move/move.c (added)
-
app/nav/dlg/copydlg.c (modified) (7 diffs)
-
app/nav/dlg/movedlg.c (added)
-
app/nav/dlg/movedlg.h (added)
-
app/nav/menu.c (modified) (4 diffs)
-
app/nav/menu.h (modified) (2 diffs)
-
app/nav/meson.build (modified) (5 diffs)
-
app/nav/move.c (added)
-
app/nav/move.h (added)
-
app/nav/nav.c (modified) (6 diffs)
-
app/nav/test/dlg/movedlg.c (added)
-
app/nav/test/main.c (modified) (1 diff)
-
app/nav/types/dlg/copydlg.h (modified) (2 diffs)
-
app/nav/types/dlg/movedlg.h (added)
-
app/nav/types/menu.h (modified) (2 diffs)
-
app/nav/types/move.h (added)
-
lib/fmgt/include/fmgt.h (modified) (2 diffs)
-
lib/fmgt/include/fmgt/move.h (added)
-
lib/fmgt/include/types/fmgt.h (modified) (1 diff)
-
lib/fmgt/meson.build (modified) (2 diffs)
-
lib/fmgt/private/fsops.h (modified) (1 diff)
-
lib/fmgt/src/fsops.c (modified) (1 diff)
-
lib/fmgt/src/move.c (added)
-
lib/fmgt/test/copy.c (modified) (5 diffs)
-
lib/fmgt/test/fsops.c (modified) (1 diff)
-
lib/fmgt/test/main.c (modified) (1 diff)
-
lib/fmgt/test/move.c (added)
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/copy/copy.c
r59ed424e rf9c30b9a 155 155 case fmgt_io_create: 156 156 fmt = "Error creating %s. (%s)\n"; 157 break; 158 case fmgt_io_delete: 159 fmt = "Error deleting %s. (%s)\n"; 157 160 break; 158 161 case fmgt_io_open: -
uspace/app/meson.build
r59ed424e rf9c30b9a 1 1 # 2 # Copyright (c) 202 5Jiri Svoboda2 # Copyright (c) 2026 Jiri Svoboda 3 3 # Copyright (c) 2019 Jiří Zárevúcky 4 4 # All rights reserved. … … 69 69 'mkmfs', 70 70 'modplay', 71 'move', 71 72 'nav', 72 73 'netecho', -
uspace/app/nav/dlg/copydlg.c
r59ed424e rf9c30b9a 1 1 /* 2 * Copyright (c) 202 5Jiri Svoboda2 * Copyright (c) 2026 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 277 277 } 278 278 279 /** Destroy new filedialog.280 * 281 * @param dialog New filedialog or @c NULL279 /** Destroy copy dialog. 280 * 281 * @param dialog Copy dialog or @c NULL 282 282 */ 283 283 void copy_dlg_destroy(copy_dlg_t *dialog) … … 290 290 } 291 291 292 /** Set new filedialog callback.293 * 294 * @param dialog new filedialog292 /** Set copy dialog callback. 293 * 294 * @param dialog Copy dialog 295 295 * @param cb New file dialog callbacks 296 296 * @param arg Callback argument … … 303 303 } 304 304 305 /** New filedialog window close handler.305 /** Copy dialog window close handler. 306 306 * 307 307 * @param window Window … … 318 318 } 319 319 320 /** New filedialog window keyboard event handler.320 /** Copy dialog window keyboard event handler. 321 321 * 322 322 * @param window Window … … 349 349 } 350 350 351 /** New filedialog OK button click handler.351 /** Copy dialog OK button click handler. 352 352 * 353 353 * @param pbutton Push button … … 363 363 } 364 364 365 /** New filedialog cancel button click handler.365 /** Copy dialog cancel button click handler. 366 366 * 367 367 * @param pbutton Push button -
uspace/app/nav/menu.c
r59ed424e rf9c30b9a 1 1 /* 2 * Copyright (c) 202 5Jiri Svoboda2 * Copyright (c) 2026 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 59 59 ui_menu_entry_t *mverify; 60 60 ui_menu_entry_t *mcopy; 61 ui_menu_entry_t *mmove; 61 62 ui_menu_entry_t *mfsep; 62 63 ui_menu_entry_t *mexit; … … 111 112 ui_menu_entry_set_cb(mcopy, nav_menu_file_copy, (void *) menu); 112 113 114 rc = ui_menu_entry_create(mfile, "~M~ove", "Ctrl-X", &mmove); 115 if (rc != EOK) 116 goto error; 117 118 ui_menu_entry_set_cb(mmove, nav_menu_file_move, (void *) menu); 119 113 120 rc = ui_menu_entry_sep_create(mfile, &mfsep); 114 121 if (rc != EOK) … … 234 241 } 235 242 243 /** File / Move menu entry selected. 244 * 245 * @param mentry Menu entry 246 * @param arg Argument (navigator_t *) 247 */ 248 void nav_menu_file_move(ui_menu_entry_t *mentry, void *arg) 249 { 250 nav_menu_t *menu = (nav_menu_t *)arg; 251 252 if (menu->cb != NULL && menu->cb->file_move != NULL) 253 menu->cb->file_move(menu->cb_arg); 254 } 255 236 256 /** File / Exit menu entry selected. 237 257 * -
uspace/app/nav/menu.h
r59ed424e rf9c30b9a 1 1 /* 2 * Copyright (c) 202 5Jiri Svoboda2 * Copyright (c) 2026 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 51 51 extern void nav_menu_file_verify(ui_menu_entry_t *, void *); 52 52 extern void nav_menu_file_copy(ui_menu_entry_t *, void *); 53 extern void nav_menu_file_move(ui_menu_entry_t *, void *); 53 54 extern void nav_menu_file_exit(ui_menu_entry_t *, void *); 54 55 -
uspace/app/nav/meson.build
r59ed424e rf9c30b9a 32 32 'dlg/existsdlg.c', 33 33 'dlg/ioerrdlg.c', 34 'dlg/movedlg.c', 34 35 'dlg/newfiledlg.c', 35 36 'dlg/progress.c', … … 38 39 'main.c', 39 40 'menu.c', 41 'move.c', 40 42 'nav.c', 41 43 'newfile.c', … … 48 50 'dlg/existsdlg.c', 49 51 'dlg/ioerrdlg.c', 52 'dlg/movedlg.c', 50 53 'dlg/newfiledlg.c', 51 54 'dlg/progress.c', … … 53 56 'copy.c', 54 57 'menu.c', 58 'move.c', 55 59 'nav.c', 56 60 'newfile.c', … … 60 64 'test/dlg/existsdlg.c', 61 65 'test/dlg/ioerrdlg.c', 66 'test/dlg/movedlg.c', 62 67 'test/dlg/newfiledlg.c', 63 68 'test/dlg/progress.c', -
uspace/app/nav/nav.c
r59ed424e rf9c30b9a 52 52 #include "dlg/ioerrdlg.h" 53 53 #include "menu.h" 54 #include "move.h" 54 55 #include "newfile.h" 55 56 #include "nav.h" … … 72 73 static void navigator_file_verify(void *); 73 74 static void navigator_file_copy(void *); 75 static void navigator_file_move(void *); 74 76 static void navigator_file_exit(void *); 75 77 … … 80 82 .file_verify = navigator_file_verify, 81 83 .file_copy = navigator_file_copy, 84 .file_move = navigator_file_move, 82 85 .file_exit = navigator_file_exit 83 86 }; … … 160 163 navigator_file_copy((void *)navigator); 161 164 break; 165 case KC_X: 166 navigator_file_move((void *)navigator); 167 break; 162 168 case KC_Q: 163 169 ui_quit(navigator->ui); … … 630 636 /* flist ownership transferred */ 631 637 navigator_copy_dlg(navigator, flist); 638 } 639 640 /** File / Move menu entry selected */ 641 static void navigator_file_move(void *arg) 642 { 643 navigator_t *navigator = (navigator_t *)arg; 644 645 ui_file_list_entry_t *entry; 646 ui_file_list_entry_attr_t attr; 647 fmgt_flist_t *flist; 648 panel_t *panel; 649 errno_t rc; 650 651 panel = navigator_get_active_panel(navigator); 652 entry = ui_file_list_get_cursor(panel->flist); 653 ui_file_list_entry_get_attr(entry, &attr); 654 655 rc = fmgt_flist_create(&flist); 656 if (rc != EOK) 657 return; 658 659 rc = fmgt_flist_append(flist, attr.name); 660 if (rc != EOK) { 661 fmgt_flist_destroy(flist); 662 return; 663 } 664 665 /* flist ownership transferred */ 666 navigator_move_dlg(navigator, flist); 632 667 } 633 668 … … 783 818 fmt = "Error creating %s."; 784 819 break; 820 case fmgt_io_delete: 821 fmt = "Error deleting %s."; 822 break; 785 823 } 786 824 -
uspace/app/nav/test/main.c
r59ed424e rf9c30b9a 38 38 PCUT_IMPORT(verifydlg); 39 39 PCUT_IMPORT(menu); 40 PCUT_IMPORT(movedlg); 40 41 PCUT_IMPORT(nav); 41 42 PCUT_IMPORT(panel); -
uspace/app/nav/types/dlg/copydlg.h
r59ed424e rf9c30b9a 1 1 /* 2 * Copyright (c) 202 5Jiri Svoboda2 * Copyright (c) 2026 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 34 34 */ 35 35 36 #ifndef TYPES_DLG_ VERIFYDLG_H37 #define TYPES_DLG_ VERIFYDLG_H36 #ifndef TYPES_DLG_COPYDLG_H 37 #define TYPES_DLG_COPYDLG_H 38 38 39 39 #include <errno.h> -
uspace/app/nav/types/menu.h
r59ed424e rf9c30b9a 1 1 /* 2 * Copyright (c) 202 5Jiri Svoboda2 * Copyright (c) 2026 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 53 53 /** File / Copy */ 54 54 void (*file_copy)(void *); 55 /** File / Move */ 56 void (*file_move)(void *); 55 57 /** File / Exit */ 56 58 void (*file_exit)(void *); -
uspace/lib/fmgt/include/fmgt.h
r59ed424e rf9c30b9a 1 1 /* 2 * Copyright (c) 202 5Jiri Svoboda2 * Copyright (c) 2026 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 44 44 #include "fmgt/copy.h" 45 45 #include "fmgt/flist.h" 46 #include "fmgt/move.h" 46 47 #include "fmgt/newfile.h" 47 48 #include "fmgt/verify.h" -
uspace/lib/fmgt/include/types/fmgt.h
r59ed424e rf9c30b9a 69 69 fmgt_io_open, 70 70 /** Create */ 71 fmgt_io_create 71 fmgt_io_create, 72 /** Delete */ 73 fmgt_io_delete 72 74 } fmgt_io_op_type_t; 73 75 -
uspace/lib/fmgt/meson.build
r59ed424e rf9c30b9a 32 32 'src/fmgt.c', 33 33 'src/fsops.c', 34 'src/move.c', 34 35 'src/newfile.c', 35 36 'src/verify.c', … … 43 44 'test/fsops.c', 44 45 'test/main.c', 46 'test/move.c', 45 47 'test/newfile.c', 46 48 'test/verify.c', -
uspace/lib/fmgt/private/fsops.h
r59ed424e rf9c30b9a 46 46 errno_t fmgt_create_file(fmgt_t *, const char *, int *, fmgt_exists_action_t *); 47 47 errno_t fmgt_create_dir(fmgt_t *, const char *); 48 errno_t fmgt_remove(fmgt_t *, const char *); 48 49 errno_t fmgt_read(fmgt_t *, int, const char *, aoff64_t *, void *, size_t, 49 50 size_t *); -
uspace/lib/fmgt/src/fsops.c
r59ed424e rf9c30b9a 166 166 } 167 167 168 /** Remove file or empty directory. 169 * 170 * @param fmgt File management object 171 * @param fame File or directory name 172 * @return EOK on success or an error code 173 */ 174 errno_t fmgt_remove(fmgt_t *fmgt, const char *fname) 175 { 176 fmgt_io_error_t err; 177 fmgt_error_action_t action; 178 errno_t rc; 179 180 do { 181 rc = vfs_unlink_path(fname); 182 if (rc == EOK) 183 break; 184 185 /* I/O error */ 186 err.fname = fname; 187 err.optype = fmgt_io_delete; 188 err.rc = rc; 189 190 fmgt_timer_stop(fmgt); 191 action = fmgt_io_error_query(fmgt, &err); 192 fmgt_timer_start(fmgt); 193 } while (action == fmgt_er_retry); 194 195 return rc; 196 } 197 168 198 /** Read data from file. 169 199 * -
uspace/lib/fmgt/test/copy.c
r59ed424e rf9c30b9a 1 1 /* 2 * Copyright (c) 202 5Jiri Svoboda2 * Copyright (c) 2026 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 167 167 char *fname; 168 168 char *dname; 169 char *rname; 169 170 FILE *f; 170 171 char *p; … … 181 182 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 182 183 183 rv = asprintf(&fname, "%s/%s", p, "a"); 184 PCUT_ASSERT_TRUE(rv >= 0); 185 186 rv = asprintf(&dname, "%s/%s", p, "b"); 184 rv = asprintf(&fname, "%s/a", p); 185 PCUT_ASSERT_TRUE(rv >= 0); 186 187 rv = asprintf(&dname, "%s/b", p); 188 PCUT_ASSERT_TRUE(rv >= 0); 189 190 rv = asprintf(&rname, "%s/b/a", p); 187 191 PCUT_ASSERT_TRUE(rv >= 0); 188 192 … … 208 212 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 209 213 210 rc = fmgt_flist_append(flist, dname);211 PCUT_ASSERT_ERRNO_VAL(EOK, rc);212 213 214 rc = fmgt_copy(fmgt, flist, dname); 214 215 PCUT_ASSERT_ERRNO_VAL(EOK, rc); … … 217 218 218 219 rv = remove(fname); 220 PCUT_ASSERT_INT_EQUALS(0, rv); 221 222 rv = remove(rname); 219 223 PCUT_ASSERT_INT_EQUALS(0, rv); 220 224 -
uspace/lib/fmgt/test/fsops.c
r59ed424e rf9c30b9a 131 131 } 132 132 133 /** Remove file. */ 134 PCUT_TEST(remove) 135 { 136 fmgt_t *fmgt = NULL; 137 char buf[L_tmpnam]; 138 FILE *f; 139 char *p; 140 int rv; 141 errno_t rc; 142 143 /* Create name for temporary file */ 144 p = tmpnam(buf); 145 PCUT_ASSERT_NOT_NULL(p); 146 147 f = fopen(p, "wb"); 148 PCUT_ASSERT_NOT_NULL(f); 149 150 rv = fprintf(f, "X"); 151 PCUT_ASSERT_TRUE(rv >= 0); 152 153 rv = fclose(f); 154 PCUT_ASSERT_INT_EQUALS(0, rv); 155 156 rc = fmgt_create(&fmgt); 157 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 158 159 rc = fmgt_remove(fmgt, p); 160 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 161 162 fmgt_destroy(fmgt); 163 } 164 133 165 /** Read data from file. */ 134 166 PCUT_TEST(read) -
uspace/lib/fmgt/test/main.c
r59ed424e rf9c30b9a 31 31 PCUT_INIT; 32 32 33 PCUT_IMPORT(copy); 33 34 PCUT_IMPORT(flist); 34 35 PCUT_IMPORT(fmgt); 35 36 PCUT_IMPORT(fsops); 37 PCUT_IMPORT(move); 36 38 PCUT_IMPORT(newfile); 37 39 PCUT_IMPORT(verify);
Note:
See TracChangeset
for help on using the changeset viewer.
