Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/futil/src/futil.c

    ra188131 r04e520e  
    11/*
    2  * Copyright (c) 2025 Jiri Svoboda
     2 * Copyright (c) 2024 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    4747static char buf[BUF_SIZE];
    4848
    49 /** Create file utility instance.
    50  *
    51  * @param cb Callback functions
    52  * @param arg Argument to callback functions
    53  * @param rfutil Place to store pointer to new file utility instance
    54  * @return EOK on succcess, ENOMEM if out of memory.
    55  */
    56 errno_t futil_create(futil_cb_t *cb, void *arg, futil_t **rfutil)
    57 {
    58         futil_t *futil;
    59 
    60         futil = calloc(1, sizeof(futil_t));
    61         if (futil == NULL)
    62                 return ENOMEM;
    63 
    64         futil->cb = cb;
    65         futil->cb_arg = arg;
    66         *rfutil = futil;
    67         return EOK;
    68 }
    69 
    70 /** Destroy file utility instance.
    71  *
    72  * @param futil File utility instance
    73  */
    74 void futil_destroy(futil_t *futil)
    75 {
    76         free(futil);
    77 }
    78 
    7949/** Copy file.
    8050 *
    81  * @param futil File utility instance
    8251 * @param srcp Source path
    8352 * @param dstp Destination path
     
    8554 * @return EOK on success, EIO on I/O error
    8655 */
    87 errno_t futil_copy_file(futil_t *futil, const char *srcp, const char *destp)
     56errno_t futil_copy_file(const char *srcp, const char *destp)
    8857{
    8958        int sf, df;
     
    9261        aoff64_t posr = 0, posw = 0;
    9362
    94         if (futil->cb != NULL && futil->cb->copy_file != NULL)
    95                 futil->cb->copy_file(futil->cb_arg, srcp, destp);
     63        printf("Copy '%s' to '%s'.\n", srcp, destp);
    9664
    9765        rc = vfs_lookup_open(srcp, WALK_REGULAR, MODE_READ, &sf);
     
    13199/** Copy contents of srcdir (recursively) into destdir.
    132100 *
    133  * @param futil File utility instance
    134101 * @param srcdir Source directory
    135102 * @param destdir Destination directory
     
    137104 * @return EOK on success, ENOMEM if out of memory, EIO on I/O error
    138105 */
    139 errno_t futil_rcopy_contents(futil_t *futil, const char *srcdir,
    140     const char *destdir)
     106errno_t futil_rcopy_contents(const char *srcdir, const char *destdir)
    141107{
    142108        DIR *dir;
     
    162128
    163129                if (s.is_file) {
    164                         rc = futil_copy_file(futil, srcp, destp);
     130                        rc = futil_copy_file(srcp, destp);
    165131                        if (rc != EOK)
    166132                                return EIO;
    167133                } else if (s.is_directory) {
    168                         if (futil->cb != NULL && futil->cb->create_dir != NULL)
    169                                 futil->cb->create_dir(futil->cb_arg, destp);
     134                        printf("Create directory '%s'\n", destp);
    170135                        rc = vfs_link_path(destp, KIND_DIRECTORY, NULL);
    171136                        if (rc != EOK)
    172137                                return EIO;
    173                         rc = futil_rcopy_contents(futil, srcp, destp);
     138                        rc = futil_rcopy_contents(srcp, destp);
    174139                        if (rc != EOK)
    175140                                return EIO;
     
    186151/** Return file contents as a heap-allocated block of bytes.
    187152 *
    188  * @param futil File utility instance
    189153 * @param srcp File path
    190154 * @param rdata Place to store pointer to data
     
    194158 *         I/O error, ENOMEM if out of memory
    195159 */
    196 errno_t futil_get_file(futil_t *futil, const char *srcp, void **rdata,
    197     size_t *rsize)
     160errno_t futil_get_file(const char *srcp, void **rdata, size_t *rsize)
    198161{
    199162        int sf;
Note: See TracChangeset for help on using the changeset viewer.