svn commit: trunk/busybox: coreutils libbb util-linux

vda at busybox.net vda at busybox.net
Thu Oct 12 22:42:34 UTC 2006


Author: vda
Date: 2006-10-12 15:42:33 -0700 (Thu, 12 Oct 2006)
New Revision: 16374

Log:
cut, mount: small improvements


Modified:
   trunk/busybox/coreutils/cut.c
   trunk/busybox/coreutils/sort.c
   trunk/busybox/libbb/get_line_from_file.c
   trunk/busybox/util-linux/mount.c


Changeset:
Modified: trunk/busybox/coreutils/cut.c
===================================================================
--- trunk/busybox/coreutils/cut.c	2006-10-12 20:06:18 UTC (rev 16373)
+++ trunk/busybox/coreutils/cut.c	2006-10-12 22:42:33 UTC (rev 16374)
@@ -13,13 +13,11 @@
 
 /* option vars */
 static const char optstring[] = "b:c:f:d:sn";
-
 #define CUT_OPT_BYTE_FLGS	(1<<0)
 #define CUT_OPT_CHAR_FLGS	(1<<1)
 #define CUT_OPT_FIELDS_FLGS	(1<<2)
 #define CUT_OPT_DELIM_FLGS	(1<<3)
 #define CUT_OPT_SUPPRESS_FLGS (1<<4)
-static unsigned opt;
 
 static char delim = '\t';	/* delimiter, default is tab */
 
@@ -61,7 +59,7 @@
 		int spos;
 
 		/* cut based on chars/bytes XXX: only works when sizeof(char) == byte */
-		if ((opt & (CUT_OPT_CHAR_FLGS | CUT_OPT_BYTE_FLGS))) {
+		if (option_mask32 & (CUT_OPT_CHAR_FLGS | CUT_OPT_BYTE_FLGS)) {
 			/* print the chars specified in each cut list */
 			for (; cl_pos < nlists; cl_pos++) {
 				spos = cut_lists[cl_pos].startpos;
@@ -115,7 +113,7 @@
 
 			/* does this line contain any delimiters? */
 			if (strchr(line, delim) == NULL) {
-				if (!(opt & CUT_OPT_SUPPRESS_FLGS))
+				if (!(option_mask32 & CUT_OPT_SUPPRESS_FLGS))
 					puts(line);
 				goto next_line;
 			}
@@ -125,7 +123,6 @@
 			for (; cl_pos < nlists && line; cl_pos++) {
 				spos = cut_lists[cl_pos].startpos;
 				do {
-
 					/* find the field we're looking for */
 					while (line && ndelim < spos) {
 						field = strsep(&line, delimiter);
@@ -156,7 +153,7 @@
 		/* if we printed anything at all, we need to finish it with a
 		 * newline cuz we were handed a chomped line */
 		putchar('\n');
-	  next_line:
+ next_line:
 		linenum++;
 		free(printed);
 		free(orig_line);
@@ -170,14 +167,13 @@
 	char *sopt, *ltok;
 
 	opt_complementary = "b--bcf:c--bcf:f--bcf";
-	opt = getopt32(argc, argv, optstring, &sopt, &sopt, &sopt, &ltok);
-	if (!(opt & (CUT_OPT_BYTE_FLGS | CUT_OPT_CHAR_FLGS | CUT_OPT_FIELDS_FLGS)))
-		bb_error_msg_and_die
-			("expected a list of bytes, characters, or fields");
-	if (opt & BB_GETOPT_ERROR)
+	getopt32(argc, argv, optstring, &sopt, &sopt, &sopt, &ltok);
+	if (!(option_mask32 & (CUT_OPT_BYTE_FLGS | CUT_OPT_CHAR_FLGS | CUT_OPT_FIELDS_FLGS)))
+		bb_error_msg_and_die("expected a list of bytes, characters, or fields");
+	if (option_mask32 & BB_GETOPT_ERROR)
 		bb_error_msg_and_die("only one type of list may be specified");
 
-	if ((opt & (CUT_OPT_DELIM_FLGS))) {
+	if (option_mask32 & CUT_OPT_DELIM_FLGS) {
 		if (strlen(ltok) > 1) {
 			bb_error_msg_and_die("the delimiter must be a single character");
 		}
@@ -185,8 +181,8 @@
 	}
 
 	/*  non-field (char or byte) cutting has some special handling */
-	if (!(opt & CUT_OPT_FIELDS_FLGS)) {
-		if (opt & CUT_OPT_SUPPRESS_FLGS) {
+	if (!(option_mask32 & CUT_OPT_FIELDS_FLGS)) {
+		if (option_mask32 & CUT_OPT_SUPPRESS_FLGS) {
 			bb_error_msg_and_die
 				("suppressing non-delimited lines makes sense%s",
 				 _op_on_field);
@@ -251,10 +247,9 @@
 				bb_error_msg_and_die("invalid byte or field list");
 
 			/* add the new list */
-			cut_lists =
-				xrealloc(cut_lists, sizeof(struct cut_list) * (++nlists));
-			cut_lists[nlists - 1].startpos = s;
-			cut_lists[nlists - 1].endpos = e;
+			cut_lists = xrealloc(cut_lists, sizeof(struct cut_list) * (++nlists));
+			cut_lists[nlists-1].startpos = s;
+			cut_lists[nlists-1].endpos = e;
 		}
 
 		/* make sure we got some cut positions out of all that */

Modified: trunk/busybox/coreutils/sort.c
===================================================================
--- trunk/busybox/coreutils/sort.c	2006-10-12 20:06:18 UTC (rev 16373)
+++ trunk/busybox/coreutils/sort.c	2006-10-12 22:42:33 UTC (rev 16374)
@@ -124,9 +124,9 @@
 }
 
 #define GET_LINE(fp) (global_flags&FLAG_z) ? bb_get_chunk_from_file(fp,NULL) \
-										   : bb_get_chomped_line_from_file(fp)
+		: bb_get_chomped_line_from_file(fp)
 #else
-#define GET_LINE(fp)		bb_get_chomped_line_from_file(fp)
+#define GET_LINE(fp)	bb_get_chomped_line_from_file(fp)
 #endif
 
 /* Iterate through keys list and perform comparisons */

Modified: trunk/busybox/libbb/get_line_from_file.c
===================================================================
--- trunk/busybox/libbb/get_line_from_file.c	2006-10-12 20:06:18 UTC (rev 16373)
+++ trunk/busybox/libbb/get_line_from_file.c	2006-10-12 22:42:33 UTC (rev 16374)
@@ -41,6 +41,7 @@
 			free(linebuf);
 			return NULL;
 		}
+		linebuf = xrealloc(linebuf, idx+1);
 		linebuf[idx] = 0;
 	}
 	return linebuf;

Modified: trunk/busybox/util-linux/mount.c
===================================================================
--- trunk/busybox/util-linux/mount.c	2006-10-12 20:06:18 UTC (rev 16373)
+++ trunk/busybox/util-linux/mount.c	2006-10-12 22:42:33 UTC (rev 16374)
@@ -172,8 +172,12 @@
 
 static llist_t *get_block_backed_filesystems(void)
 {
-	char *fs, *buf,
-		 *filesystems[] = {"/etc/filesystems", "/proc/filesystems", 0};
+	static const char *const filesystems[] = {
+		"/etc/filesystems",
+		"/proc/filesystems",
+		0
+	};
+	char *fs, *buf;
 	llist_t *list = 0;
 	int i;
 	FILE *f;
@@ -182,16 +186,15 @@
 		f = fopen(filesystems[i], "r");
 		if (!f) continue;
 
-		for (fs = buf = 0; (fs = buf = bb_get_chomped_line_from_file(f));
-			free(buf))
-		{
-			if (!strncmp(buf,"nodev",5) && isspace(buf[5])) continue;
-
+		while ((buf = bb_get_chomped_line_from_file(f)) != 0) {
+			if (!strncmp(buf, "nodev", 5) && isspace(buf[5]))
+				continue;
+			fs = buf;
 			while (isspace(*fs)) fs++;
-			if (*fs=='#' || *fs=='*') continue;
-			if (!*fs) continue;
+			if (*fs=='#' || *fs=='*' || !*fs) continue;
 
-			llist_add_to_end(&list,xstrdup(fs));
+			llist_add_to_end(&list, xstrdup(fs));
+			free(buf);
 		}
 		if (ENABLE_FEATURE_CLEAN_UP) fclose(f);
 	}




More information about the busybox-cvs mailing list