Changeset aca1777 in mainline for uspace/lib/futil/src/futil.c


Ignore:
Timestamp:
2025-05-08T17:12:05Z (3 months ago)
Author:
Miroslav Cimerman <mc@…>
Children:
2f21cd4
Parents:
1cfce3f (diff), 61f28c4 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge upstream into helenraid

File:
1 edited

Legend:

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

    r1cfce3f raca1777  
    9999                return EIO;
    100100
    101         rc = vfs_lookup_open(destp, WALK_REGULAR | WALK_MAY_CREATE, MODE_WRITE, &df);
    102         if (rc != EOK)
    103                 return EIO;
     101        rc = vfs_lookup_open(destp, WALK_REGULAR | WALK_MAY_CREATE, MODE_WRITE,
     102            &df);
     103        if (rc != EOK) {
     104                vfs_put(sf);
     105                return EIO;
     106        }
    104107
    105108        do {
     
    152155        de = readdir(dir);
    153156        while (de != NULL) {
    154                 if (asprintf(&srcp, "%s/%s", srcdir, de->d_name) < 0)
    155                         return ENOMEM;
    156                 if (asprintf(&destp, "%s/%s", destdir, de->d_name) < 0)
    157                         return ENOMEM;
     157                if (asprintf(&srcp, "%s/%s", srcdir, de->d_name) < 0) {
     158                        rc = ENOMEM;
     159                        goto error;
     160                }
     161
     162                if (asprintf(&destp, "%s/%s", destdir, de->d_name) < 0) {
     163                        rc = ENOMEM;
     164                        goto error;
     165                }
    158166
    159167                rc = vfs_stat_path(srcp, &s);
    160168                if (rc != EOK)
    161                         return EIO;
     169                        goto error;
    162170
    163171                if (s.is_file) {
    164172                        rc = futil_copy_file(futil, srcp, destp);
    165                         if (rc != EOK)
    166                                 return EIO;
     173                        if (rc != EOK) {
     174                                rc = EIO;
     175                                goto error;
     176                        }
    167177                } else if (s.is_directory) {
    168178                        if (futil->cb != NULL && futil->cb->create_dir != NULL)
     
    170180                        rc = vfs_link_path(destp, KIND_DIRECTORY, NULL);
    171181                        if (rc != EOK)
    172                                 return EIO;
     182                                goto error;
    173183                        rc = futil_rcopy_contents(futil, srcp, destp);
    174184                        if (rc != EOK)
    175                                 return EIO;
     185                                goto error;
    176186                } else {
    177                         return EIO;
     187                        rc = EIO;
     188                        goto error;
    178189                }
    179190
     
    181192        }
    182193
    183         return EOK;
     194        closedir(dir);
     195        return EOK;
     196error:
     197        closedir(dir);
     198        return rc;
    184199}
    185200
Note: See TracChangeset for help on using the changeset viewer.