Changeset 629b480 in mainline for uspace/lib/futil/src/futil.c


Ignore:
Timestamp:
2025-04-25T20:48:07Z (5 weeks ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master
Children:
0526285, 21cd0c8, 32cb7cd, 4ae6a23, a4f8c3f, abd1eff, cbaf408, f7f60e70
Parents:
4b9213d
Message:

Assorted installer fixes.

File:
1 edited

Legend:

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

    r4b9213d r629b480  
    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.