diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2006-10-05 23:12:49 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2006-10-05 23:12:49 +0000 |
commit | 000b9ba91f64a348d697fb22a546cfb4db1d9f0e (patch) | |
tree | a36bca5413a3305c46a24a95f45556125ebc2508 | |
parent | de59c0f58fa5dc75b753f94da61be92bfa0935ec (diff) | |
download | busybox-w32-000b9ba91f64a348d697fb22a546cfb4db1d9f0e.tar.gz busybox-w32-000b9ba91f64a348d697fb22a546cfb4db1d9f0e.tar.bz2 busybox-w32-000b9ba91f64a348d697fb22a546cfb4db1d9f0e.zip |
eject: -T fix
-rw-r--r-- | miscutils/eject.c | 36 | ||||
-rw-r--r-- | networking/tftp.c | 6 | ||||
-rw-r--r-- | util-linux/rdate.c | 4 |
3 files changed, 24 insertions, 22 deletions
diff --git a/miscutils/eject.c b/miscutils/eject.c index d49396be6..b07f536b1 100644 --- a/miscutils/eject.c +++ b/miscutils/eject.c | |||
@@ -19,7 +19,9 @@ | |||
19 | /* various defines swiped from linux/cdrom.h */ | 19 | /* various defines swiped from linux/cdrom.h */ |
20 | #define CDROMCLOSETRAY 0x5319 /* pendant of CDROMEJECT */ | 20 | #define CDROMCLOSETRAY 0x5319 /* pendant of CDROMEJECT */ |
21 | #define CDROMEJECT 0x5309 /* Ejects the cdrom media */ | 21 | #define CDROMEJECT 0x5309 /* Ejects the cdrom media */ |
22 | #define DEFAULT_CDROM "/dev/cdrom" | 22 | #define CDROM_DRIVE_STATUS 0x5326 /* Get tray position, etc. */ |
23 | /* drive status possibilities returned by CDROM_DRIVE_STATUS ioctl */ | ||
24 | #define CDS_TRAY_OPEN 2 | ||
23 | 25 | ||
24 | #define FLAG_CLOSE 1 | 26 | #define FLAG_CLOSE 1 |
25 | #define FLAG_SMART 2 | 27 | #define FLAG_SMART 2 |
@@ -29,32 +31,34 @@ int eject_main(int argc, char **argv) | |||
29 | unsigned long flags; | 31 | unsigned long flags; |
30 | char *device; | 32 | char *device; |
31 | struct mntent *m; | 33 | struct mntent *m; |
32 | int dev; | 34 | int dev, cmd; |
33 | 35 | ||
34 | /*opt_complementary = "t--T:T--t";*/ | 36 | opt_complementary = "?:?1:t--T:T--t"; |
35 | flags = getopt32(argc, argv, "tT"); | 37 | flags = getopt32(argc, argv, "tT"); |
36 | device = argv[optind] ? : DEFAULT_CDROM; | 38 | device = argv[optind] ? : "/dev/cdrom"; |
37 | 39 | ||
40 | // FIXME: what if something is mounted OVER our cdrom? | ||
41 | // We will unmount something else??! | ||
42 | // What if cdrom is mounted many times? | ||
38 | m = find_mount_point(device, bb_path_mtab_file); | 43 | m = find_mount_point(device, bb_path_mtab_file); |
39 | if (m) { | 44 | if (m) { |
40 | if (umount(m->mnt_dir)) { | 45 | if (umount(m->mnt_dir)) |
41 | bb_error_msg_and_die("can't umount"); | 46 | bb_error_msg_and_die("can't umount %s", device); |
42 | } else if (ENABLE_FEATURE_MTAB_SUPPORT) { | 47 | if (ENABLE_FEATURE_MTAB_SUPPORT) |
43 | erase_mtab(m->mnt_fsname); | 48 | erase_mtab(m->mnt_fsname); |
44 | } | ||
45 | } | 49 | } |
46 | 50 | ||
47 | dev = xopen(device, O_RDONLY|O_NONBLOCK); | 51 | dev = xopen(device, O_RDONLY|O_NONBLOCK); |
48 | 52 | cmd = CDROMEJECT; | |
49 | if (flags & FLAG_CLOSE) goto close_tray; | 53 | if (flags & FLAG_CLOSE |
50 | 54 | || (flags & FLAG_SMART && ioctl(dev, CDROM_DRIVE_STATUS) == CDS_TRAY_OPEN)) | |
51 | if (ioctl(dev, CDROMEJECT)) { | 55 | cmd = CDROMCLOSETRAY; |
52 | close_tray: | 56 | if (ioctl(dev, cmd)) { |
53 | if (ioctl(dev, CDROMCLOSETRAY)) | 57 | bb_perror_msg_and_die("%s", device); |
54 | bb_perror_msg_and_die("%s", device); | ||
55 | } | 58 | } |
56 | 59 | ||
57 | if (ENABLE_FEATURE_CLEAN_UP) close(dev); | 60 | if (ENABLE_FEATURE_CLEAN_UP) |
61 | close(dev); | ||
58 | 62 | ||
59 | return EXIT_SUCCESS; | 63 | return EXIT_SUCCESS; |
60 | } | 64 | } |
diff --git a/networking/tftp.c b/networking/tftp.c index 5f0c190e2..bfe94aca2 100644 --- a/networking/tftp.c +++ b/networking/tftp.c | |||
@@ -502,9 +502,7 @@ int tftp_main(int argc, char **argv) | |||
502 | opt_complementary = GET_COMPL PUT_COMPL; | 502 | opt_complementary = GET_COMPL PUT_COMPL; |
503 | #endif | 503 | #endif |
504 | 504 | ||
505 | 505 | cmd = getopt32(argc, argv, GET PUT "l:r:" BS, &localfile, &remotefile BS_ARG); | |
506 | cmd = getopt32(argc, argv, GET PUT "l:r:" BS, | ||
507 | &localfile, &remotefile BS_ARG); | ||
508 | 506 | ||
509 | cmd &= (tftp_cmd_get | tftp_cmd_put); | 507 | cmd &= (tftp_cmd_get | tftp_cmd_put); |
510 | #ifdef CONFIG_FEATURE_TFTP_GET | 508 | #ifdef CONFIG_FEATURE_TFTP_GET |
@@ -559,5 +557,5 @@ int tftp_main(int argc, char **argv) | |||
559 | if (cmd == tftp_cmd_get && result != EXIT_SUCCESS) | 557 | if (cmd == tftp_cmd_get && result != EXIT_SUCCESS) |
560 | unlink(localfile); | 558 | unlink(localfile); |
561 | } | 559 | } |
562 | return (result); | 560 | return result; |
563 | } | 561 | } |
diff --git a/util-linux/rdate.c b/util-linux/rdate.c index c24465dc3..6ad055434 100644 --- a/util-linux/rdate.c +++ b/util-linux/rdate.c | |||
@@ -73,10 +73,10 @@ int rdate_main(int argc, char **argv) | |||
73 | 73 | ||
74 | time(¤t_time); | 74 | time(¤t_time); |
75 | if (current_time == remote_time) | 75 | if (current_time == remote_time) |
76 | bb_error_msg("Current time matches remote time."); | 76 | bb_error_msg("current time matches remote time"); |
77 | else | 77 | else |
78 | if (stime(&remote_time) < 0) | 78 | if (stime(&remote_time) < 0) |
79 | bb_perror_msg_and_die("Could not set time of day"); | 79 | bb_perror_msg_and_die("cannot set time of day"); |
80 | } | 80 | } |
81 | 81 | ||
82 | if ((flags & 1) == 0) | 82 | if ((flags & 1) == 0) |