Changeset 96ef0d1e in mainline


Ignore:
Timestamp:
2026-03-07T19:50:50Z (8 hours ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master
Parents:
a927af7a
Message:

Rename file (Navigator and command line).

Location:
uspace
Files:
13 added
16 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/copy/copy.c

    ra927af7a r96ef0d1e  
    161161        case fmgt_io_open:
    162162                fmt = "Error opening %s. (%s)\n";
     163                break;
     164        case fmgt_io_rename:
     165                fmt = "Error renaming %s. (%s)\n";
    163166                break;
    164167        }
  • uspace/app/meson.build

    ra927af7a r96ef0d1e  
    8484        'pkg',
    8585        'redir',
     86        'rename',
    8687        'sbi',
    8788        'shutdown',
  • uspace/app/move/move.c

    ra927af7a r96ef0d1e  
    161161        case fmgt_io_open:
    162162                fmt = "Error opening %s. (%s)\n";
     163                break;
     164        case fmgt_io_rename:
     165                fmt = "Error renaming %s. (%s)\n";
    163166                break;
    164167        }
  • uspace/app/nav/dlg/copydlg.c

    ra927af7a r96ef0d1e  
    186186        if (rc != EOK)
    187187                goto error;
     188
     189        ui_entry_activate(edest);
     190
     191        /* Select all */
     192        ui_entry_seek_start(edest, false);
     193        ui_entry_seek_end(edest, true);
    188194
    189195        dialog->edest = edest;
  • uspace/app/nav/dlg/movedlg.c

    ra927af7a r96ef0d1e  
    8989        ui_resource_t *ui_res;
    9090        fmgt_flist_entry_t *entry;
     91        int rv;
    9192        char *tmove = NULL;
    9293        unsigned count;
     
    129130        if (count == 1) {
    130131                entry = fmgt_flist_first(flist);
    131                 rc = asprintf(&tmove, "Move \"%s\" to:",
    132                     entry->fname);
    133         } else {
    134                 rc = asprintf(&tmove, "Move %u files/directories to:",
    135                     count);
     132                rv = asprintf(&tmove, "Move \"%s\" to:", entry->fname);
     133                if (rv < 0)
     134                        goto error;
     135        } else {
     136                rv = asprintf(&tmove, "Move %u files/directories to:", count);
     137                if (rv < 0)
     138                        goto error;
    136139        }
    137140
     
    186189        if (rc != EOK)
    187190                goto error;
     191
     192        ui_entry_activate(edest);
     193
     194        /* Select all */
     195        ui_entry_seek_start(edest, false);
     196        ui_entry_seek_end(edest, true);
    188197
    189198        dialog->edest = edest;
  • uspace/app/nav/menu.c

    ra927af7a r96ef0d1e  
    6060        ui_menu_entry_t *mverify;
    6161        ui_menu_entry_t *mcopy;
     62        ui_menu_entry_t *mrename;
    6263        ui_menu_entry_t *mmove;
    6364        ui_menu_entry_t *mdelete;
     
    9091        ui_menu_entry_set_cb(mnew, nav_menu_file_new_file, (void *) menu);
    9192
    92         rc = ui_menu_entry_create(mfile, "New Di~r~ectory", "Ctrl-N", &mnewdir);
     93        rc = ui_menu_entry_create(mfile, "New D~i~rectory", "Ctrl-N", &mnewdir);
    9394        if (rc != EOK)
    9495                goto error;
     
    119120
    120121        ui_menu_entry_set_cb(mcopy, nav_menu_file_copy, (void *) menu);
     122
     123        rc = ui_menu_entry_create(mfile, "~R~ename", "Ctrl-R", &mrename);
     124        if (rc != EOK)
     125                goto error;
     126
     127        ui_menu_entry_set_cb(mrename, nav_menu_file_rename, (void *) menu);
    121128
    122129        rc = ui_menu_entry_create(mfile, "~M~ove", "Ctrl-X", &mmove);
     
    268275}
    269276
     277/** File / Rename menu entry selected.
     278 *
     279 * @param mentry Menu entry
     280 * @param arg Argument (navigator_t *)
     281 */
     282void nav_menu_file_rename(ui_menu_entry_t *mentry, void *arg)
     283{
     284        nav_menu_t *menu = (nav_menu_t *)arg;
     285
     286        if (menu->cb != NULL && menu->cb->file_rename != NULL)
     287                menu->cb->file_rename(menu->cb_arg);
     288}
     289
    270290/** File / Move menu entry selected.
    271291 *
  • uspace/app/nav/menu.h

    ra927af7a r96ef0d1e  
    5252extern void nav_menu_file_verify(ui_menu_entry_t *, void *);
    5353extern void nav_menu_file_copy(ui_menu_entry_t *, void *);
     54extern void nav_menu_file_rename(ui_menu_entry_t *, void *);
    5455extern void nav_menu_file_move(ui_menu_entry_t *, void *);
    5556extern void nav_menu_file_delete(ui_menu_entry_t *, void *);
  • uspace/app/nav/meson.build

    ra927af7a r96ef0d1e  
    3737        'dlg/newfiledlg.c',
    3838        'dlg/progress.c',
     39        'dlg/renamedlg.c',
    3940        'dlg/verifydlg.c',
    4041        'copy.c',
     
    4748        'newfile.c',
    4849        'panel.c',
     50        'rename.c',
    4951        'verify.c',
    5052)
     
    5961        'dlg/newfiledlg.c',
    6062        'dlg/progress.c',
     63        'dlg/renamedlg.c',
    6164        'dlg/verifydlg.c',
    6265        'copy.c',
     
    6871        'newfile.c',
    6972        'panel.c',
     73        'rename.c',
    7074        'verify.c',
    7175        'test/dlg/copydlg.c',
     
    7781        'test/dlg/newfiledlg.c',
    7882        'test/dlg/progress.c',
     83        'test/dlg/renamedlg.c',
    7984        'test/dlg/verifydlg.c',
    8085        'test/main.c',
  • uspace/app/nav/nav.c

    ra927af7a r96ef0d1e  
    5959#include "nav.h"
    6060#include "panel.h"
     61#include "rename.h"
    6162#include "verify.h"
    6263
     
    7778static void navigator_file_verify(void *);
    7879static void navigator_file_copy(void *);
     80static void navigator_file_rename(void *);
    7981static void navigator_file_move(void *);
    8082static void navigator_file_delete(void *);
     
    8890        .file_verify = navigator_file_verify,
    8991        .file_copy = navigator_file_copy,
     92        .file_rename = navigator_file_rename,
    9093        .file_move = navigator_file_move,
    9194        .file_delete = navigator_file_delete,
     
    179182                        navigator_file_delete((void *)navigator);
    180183                        break;
     184                case KC_R:
     185                        navigator_file_rename((void *)navigator);
     186                        break;
    181187                case KC_Q:
    182188                        ui_quit(navigator->ui);
     
    715721        /* flist ownership transferred */
    716722        navigator_delete_dlg(navigator, flist);
     723}
     724
     725/** File / Rename menu entry selected */
     726static void navigator_file_rename(void *arg)
     727{
     728        navigator_t *navigator = (navigator_t *)arg;
     729
     730        ui_file_list_entry_t *entry;
     731        ui_file_list_entry_attr_t attr;
     732        panel_t *panel;
     733
     734        panel = navigator_get_active_panel(navigator);
     735        entry = ui_file_list_get_cursor(panel->flist);
     736        ui_file_list_entry_get_attr(entry, &attr);
     737
     738        /* flist ownership transferred */
     739        navigator_rename_dlg(navigator, attr.name);
    717740}
    718741
     
    871894                fmt = "Error deleting %s.";
    872895                break;
     896        case fmgt_io_rename:
     897                fmt = "Error renaming %s.";
     898                break;
    873899        }
    874900
  • uspace/app/nav/types/menu.h

    ra927af7a r96ef0d1e  
    5555        /** File / Copy */
    5656        void (*file_copy)(void *);
     57        /** File / Rename */
     58        void (*file_rename)(void *);
    5759        /** File / Move */
    5860        void (*file_move)(void *);
  • uspace/lib/fmgt/include/fmgt.h

    ra927af7a r96ef0d1e  
    4848#include "fmgt/newdir.h"
    4949#include "fmgt/newfile.h"
     50#include "fmgt/rename.h"
    5051#include "fmgt/verify.h"
    5152#include "fmgt/walk.h"
  • uspace/lib/fmgt/include/types/fmgt.h

    ra927af7a r96ef0d1e  
    7373        fmgt_io_create,
    7474        /** Delete */
    75         fmgt_io_delete
     75        fmgt_io_delete,
     76        /** Rename */
     77        fmgt_io_rename
    7678} fmgt_io_op_type_t;
    7779
  • uspace/lib/fmgt/meson.build

    ra927af7a r96ef0d1e  
    3636        'src/newdir.c',
    3737        'src/newfile.c',
     38        'src/rename.c',
    3839        'src/verify.c',
    3940        'src/walk.c'
     
    4950        'test/newdir.c',
    5051        'test/newfile.c',
     52        'test/rename.c',
    5153        'test/verify.c',
    5254        'test/walk.c'
  • uspace/lib/fmgt/private/fsops.h

    ra927af7a r96ef0d1e  
    3838#define PRIVATE_FSOPS_H
    3939
     40#include <offset.h>
    4041#include <stddef.h>
    4142#include <stdio.h>
     
    4748errno_t fmgt_create_dir(fmgt_t *, const char *, bool);
    4849errno_t fmgt_remove(fmgt_t *, const char *);
     50errno_t fmgt_rename_entry(fmgt_t *, const char *, const char *);
    4951errno_t fmgt_read(fmgt_t *, int, const char *, aoff64_t *, void *, size_t,
    5052    size_t *);
  • uspace/lib/fmgt/src/fsops.c

    ra927af7a r96ef0d1e  
    283283}
    284284
     285/** Rename file or directory.
     286 *
     287 * @param fmgt File management object
     288 * @param old_path Original filesystem path
     289 * @param new_name New name (does not need to be a full path)
     290 * @return EOK on success or an error code
     291 */
     292errno_t fmgt_rename_entry(fmgt_t *fmgt, const char *old_path,
     293    const char *new_name)
     294{
     295        fmgt_io_error_t err;
     296        fmgt_error_action_t action;
     297        errno_t rc;
     298
     299        do {
     300                rc = vfs_rename_path(old_path, new_name);
     301
     302                if (rc == EOK)
     303                        break;
     304
     305                /* I/O error */
     306                err.fname = old_path;
     307                err.optype = fmgt_io_rename;
     308                err.rc = rc;
     309
     310                fmgt_timer_stop(fmgt);
     311                action = fmgt_io_error_query(fmgt, &err);
     312                fmgt_timer_start(fmgt);
     313        } while (action == fmgt_er_retry);
     314
     315        return rc;
     316}
     317
    285318/** @}
    286319 */
  • uspace/lib/fmgt/test/main.c

    ra927af7a r96ef0d1e  
    3737PCUT_IMPORT(move);
    3838PCUT_IMPORT(newfile);
     39PCUT_IMPORT(rename);
    3940PCUT_IMPORT(verify);
    4041PCUT_IMPORT(walk);
Note: See TracChangeset for help on using the changeset viewer.