svn commit: trunk/busybox: miscutils networking util-linux

vda at busybox.net vda at busybox.net
Thu Oct 5 16:12:49 PDT 2006


Author: vda
Date: 2006-10-05 16:12:49 -0700 (Thu, 05 Oct 2006)
New Revision: 16314

Log:
eject: -T fix


Modified:
   trunk/busybox/miscutils/eject.c
   trunk/busybox/networking/tftp.c
   trunk/busybox/util-linux/rdate.c


Changeset:
Modified: trunk/busybox/miscutils/eject.c
===================================================================
--- trunk/busybox/miscutils/eject.c	2006-10-05 22:50:22 UTC (rev 16313)
+++ trunk/busybox/miscutils/eject.c	2006-10-05 23:12:49 UTC (rev 16314)
@@ -19,7 +19,9 @@
 /* various defines swiped from linux/cdrom.h */
 #define CDROMCLOSETRAY            0x5319  /* pendant of CDROMEJECT  */
 #define CDROMEJECT                0x5309  /* Ejects the cdrom media */
-#define DEFAULT_CDROM             "/dev/cdrom"
+#define CDROM_DRIVE_STATUS        0x5326  /* Get tray position, etc. */
+/* drive status possibilities returned by CDROM_DRIVE_STATUS ioctl */
+#define CDS_TRAY_OPEN        2
 
 #define FLAG_CLOSE  1
 #define FLAG_SMART  2
@@ -29,32 +31,34 @@
 	unsigned long flags;
 	char *device;
 	struct mntent *m;
-	int dev;
+	int dev, cmd;
 
-	/*opt_complementary = "t--T:T--t";*/
+	opt_complementary = "?:?1:t--T:T--t";
 	flags = getopt32(argc, argv, "tT");
-	device = argv[optind] ? : DEFAULT_CDROM;
+	device = argv[optind] ? : "/dev/cdrom";
 
+	// FIXME: what if something is mounted OVER our cdrom?
+	// We will unmount something else??!
+	// What if cdrom is mounted many times?
 	m = find_mount_point(device, bb_path_mtab_file);
 	if (m) {
-		if (umount(m->mnt_dir)) {
-			bb_error_msg_and_die("can't umount");
-		} else if (ENABLE_FEATURE_MTAB_SUPPORT) {
+		if (umount(m->mnt_dir))
+			bb_error_msg_and_die("can't umount %s", device);
+		if (ENABLE_FEATURE_MTAB_SUPPORT)
 			erase_mtab(m->mnt_fsname);
-		}
 	}
 
 	dev = xopen(device, O_RDONLY|O_NONBLOCK);
-
-	if (flags & FLAG_CLOSE) goto close_tray;
-
-	if (ioctl(dev, CDROMEJECT)) {
-close_tray:
-		if (ioctl(dev, CDROMCLOSETRAY))
-			bb_perror_msg_and_die("%s", device);
+	cmd = CDROMEJECT;
+	if (flags & FLAG_CLOSE
+	 || (flags & FLAG_SMART && ioctl(dev, CDROM_DRIVE_STATUS) == CDS_TRAY_OPEN))
+		cmd = CDROMCLOSETRAY;
+	if (ioctl(dev, cmd)) {
+		bb_perror_msg_and_die("%s", device);
 	}
 
-	if (ENABLE_FEATURE_CLEAN_UP) close(dev);
+	if (ENABLE_FEATURE_CLEAN_UP)
+		close(dev);
 
 	return EXIT_SUCCESS;
 }

Modified: trunk/busybox/networking/tftp.c
===================================================================
--- trunk/busybox/networking/tftp.c	2006-10-05 22:50:22 UTC (rev 16313)
+++ trunk/busybox/networking/tftp.c	2006-10-05 23:12:49 UTC (rev 16314)
@@ -502,10 +502,8 @@
 	opt_complementary = GET_COMPL PUT_COMPL;
 #endif
 
+	cmd = getopt32(argc, argv, GET PUT "l:r:" BS, &localfile, &remotefile BS_ARG);
 
-	cmd = getopt32(argc, argv, GET PUT "l:r:" BS,
-							&localfile, &remotefile BS_ARG);
-
 	cmd &= (tftp_cmd_get | tftp_cmd_put);
 #ifdef CONFIG_FEATURE_TFTP_GET
 	if (cmd == tftp_cmd_get)
@@ -559,5 +557,5 @@
 		if (cmd == tftp_cmd_get && result != EXIT_SUCCESS)
 			unlink(localfile);
 	}
-	return (result);
+	return result;
 }

Modified: trunk/busybox/util-linux/rdate.c
===================================================================
--- trunk/busybox/util-linux/rdate.c	2006-10-05 22:50:22 UTC (rev 16313)
+++ trunk/busybox/util-linux/rdate.c	2006-10-05 23:12:49 UTC (rev 16314)
@@ -73,10 +73,10 @@
 
 		time(&current_time);
 		if (current_time == remote_time)
-			bb_error_msg("Current time matches remote time.");
+			bb_error_msg("current time matches remote time");
 		else
 			if (stime(&remote_time) < 0)
-				bb_perror_msg_and_die("Could not set time of day");
+				bb_perror_msg_and_die("cannot set time of day");
 	}
 
 	if ((flags & 1) == 0)



More information about the busybox-cvs mailing list