diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2007-01-22 14:06:03 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2007-01-22 14:06:03 +0000 |
commit | 6cd2d2bcba37a13d0d73326dd7bca64bbccce4f8 (patch) | |
tree | 42ddb59f35d305a5587a02197ad7630fc8ff289b /util-linux/mount.c | |
parent | 35d4da0fb5884236fa7a131a13416268239c9e69 (diff) | |
download | busybox-w32-6cd2d2bcba37a13d0d73326dd7bca64bbccce4f8.tar.gz busybox-w32-6cd2d2bcba37a13d0d73326dd7bca64bbccce4f8.tar.bz2 busybox-w32-6cd2d2bcba37a13d0d73326dd7bca64bbccce4f8.zip |
dnsd: getfileentry was leaking memory
mount: improve readability
Diffstat (limited to 'util-linux/mount.c')
-rw-r--r-- | util-linux/mount.c | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/util-linux/mount.c b/util-linux/mount.c index 77382ff51..ee45f01a6 100644 --- a/util-linux/mount.c +++ b/util-linux/mount.c | |||
@@ -1386,14 +1386,16 @@ static int singlemount(struct mntent *mp, int ignore_busy) | |||
1386 | 1386 | ||
1387 | // Treat fstype "auto" as unspecified. | 1387 | // Treat fstype "auto" as unspecified. |
1388 | 1388 | ||
1389 | if (mp->mnt_type && !strcmp(mp->mnt_type,"auto")) mp->mnt_type = 0; | 1389 | if (mp->mnt_type && strcmp(mp->mnt_type,"auto") == 0) |
1390 | mp->mnt_type = 0; | ||
1390 | 1391 | ||
1391 | // Might this be an CIFS filesystem? | 1392 | // Might this be an CIFS filesystem? |
1392 | 1393 | ||
1393 | if (ENABLE_FEATURE_MOUNT_CIFS && | 1394 | if (ENABLE_FEATURE_MOUNT_CIFS |
1394 | (!mp->mnt_type || !strcmp(mp->mnt_type,"cifs")) && | 1395 | && (!mp->mnt_type || strcmp(mp->mnt_type,"cifs") == 0) |
1395 | (mp->mnt_fsname[0]==mp->mnt_fsname[1] && (mp->mnt_fsname[0]=='/' || mp->mnt_fsname[0]=='\\'))) | 1396 | && (mp->mnt_fsname[0]=='/' || mp->mnt_fsname[0]=='\\') |
1396 | { | 1397 | && mp->mnt_fsname[0]==mp->mnt_fsname[1] |
1398 | ) { | ||
1397 | struct hostent *he; | 1399 | struct hostent *he; |
1398 | char ip[32], *s; | 1400 | char ip[32], *s; |
1399 | 1401 | ||
@@ -1407,7 +1409,7 @@ static int singlemount(struct mntent *mp, int ignore_busy) | |||
1407 | 1409 | ||
1408 | s = strrchr(mp->mnt_fsname, '\\'); | 1410 | s = strrchr(mp->mnt_fsname, '\\'); |
1409 | if (s == mp->mnt_fsname+1) goto report_error; | 1411 | if (s == mp->mnt_fsname+1) goto report_error; |
1410 | *s = 0; | 1412 | *s = '\0'; |
1411 | he = gethostbyname(mp->mnt_fsname+2); | 1413 | he = gethostbyname(mp->mnt_fsname+2); |
1412 | *s = '\\'; | 1414 | *s = '\\'; |
1413 | if (!he) goto report_error; | 1415 | if (!he) goto report_error; |
@@ -1434,10 +1436,10 @@ static int singlemount(struct mntent *mp, int ignore_busy) | |||
1434 | 1436 | ||
1435 | // Might this be an NFS filesystem? | 1437 | // Might this be an NFS filesystem? |
1436 | 1438 | ||
1437 | if (ENABLE_FEATURE_MOUNT_NFS && | 1439 | if (ENABLE_FEATURE_MOUNT_NFS |
1438 | (!mp->mnt_type || !strcmp(mp->mnt_type,"nfs")) && | 1440 | && (!mp->mnt_type || !strcmp(mp->mnt_type,"nfs")) |
1439 | strchr(mp->mnt_fsname, ':') != NULL) | 1441 | && strchr(mp->mnt_fsname, ':') != NULL |
1440 | { | 1442 | ) { |
1441 | rc = nfsmount(mp, vfsflags, filteropts); | 1443 | rc = nfsmount(mp, vfsflags, filteropts); |
1442 | goto report_error; | 1444 | goto report_error; |
1443 | } | 1445 | } |
@@ -1445,8 +1447,9 @@ static int singlemount(struct mntent *mp, int ignore_busy) | |||
1445 | // Look at the file. (Not found isn't a failure for remount, or for | 1447 | // Look at the file. (Not found isn't a failure for remount, or for |
1446 | // a synthetic filesystem like proc or sysfs.) | 1448 | // a synthetic filesystem like proc or sysfs.) |
1447 | 1449 | ||
1448 | if (!lstat(mp->mnt_fsname, &st) && !(vfsflags & (MS_REMOUNT | MS_BIND | MS_MOVE))) | 1450 | if (!lstat(mp->mnt_fsname, &st) |
1449 | { | 1451 | && !(vfsflags & (MS_REMOUNT | MS_BIND | MS_MOVE)) |
1452 | ) { | ||
1450 | // Do we need to allocate a loopback device for it? | 1453 | // Do we need to allocate a loopback device for it? |
1451 | 1454 | ||
1452 | if (ENABLE_FEATURE_MOUNT_LOOP && S_ISREG(st.st_mode)) { | 1455 | if (ENABLE_FEATURE_MOUNT_LOOP && S_ISREG(st.st_mode)) { |
@@ -1474,10 +1477,9 @@ static int singlemount(struct mntent *mp, int ignore_busy) | |||
1474 | 1477 | ||
1475 | if (mp->mnt_type || (vfsflags & (MS_REMOUNT | MS_BIND | MS_MOVE))) | 1478 | if (mp->mnt_type || (vfsflags & (MS_REMOUNT | MS_BIND | MS_MOVE))) |
1476 | rc = mount_it_now(mp, vfsflags, filteropts); | 1479 | rc = mount_it_now(mp, vfsflags, filteropts); |
1477 | |||
1478 | // Loop through filesystem types until mount succeeds or we run out | ||
1479 | |||
1480 | else { | 1480 | else { |
1481 | // Loop through filesystem types until mount succeeds | ||
1482 | // or we run out | ||
1481 | 1483 | ||
1482 | /* Initialize list of block backed filesystems. This has to be | 1484 | /* Initialize list of block backed filesystems. This has to be |
1483 | * done here so that during "mount -a", mounts after /proc shows up | 1485 | * done here so that during "mount -a", mounts after /proc shows up |
@@ -1612,9 +1614,9 @@ int mount_main(int argc, char **argv) | |||
1612 | 1614 | ||
1613 | // If we have a shared subtree flag, don't worry about fstab or mtab. | 1615 | // If we have a shared subtree flag, don't worry about fstab or mtab. |
1614 | 1616 | ||
1615 | if (ENABLE_FEATURE_MOUNT_FLAGS && | 1617 | if (ENABLE_FEATURE_MOUNT_FLAGS |
1616 | (i & (MS_SHARED | MS_PRIVATE | MS_SLAVE | MS_UNBINDABLE))) | 1618 | && (i & (MS_SHARED | MS_PRIVATE | MS_SLAVE | MS_UNBINDABLE)) |
1617 | { | 1619 | ) { |
1618 | rc = mount("", argv[0], "", i, ""); | 1620 | rc = mount("", argv[0], "", i, ""); |
1619 | if (rc) bb_perror_msg_and_die("%s", argv[0]); | 1621 | if (rc) bb_perror_msg_and_die("%s", argv[0]); |
1620 | goto clean_up; | 1622 | goto clean_up; |