Util-Linux package development
 help / color / mirror / Atom feed
* [git pull] miscellaneous compiler warning fixes etc
@ 2011-07-28 21:33 Sami Kerola
  2011-07-28 22:44 ` Karel Zak
  2011-08-02 12:32 ` Karel Zak
  0 siblings, 2 replies; 6+ messages in thread
From: Sami Kerola @ 2011-07-28 21:33 UTC (permalink / raw)
  To: util-linux

The following changes since commit c632883f309762857b40003136eed9fb8eb63615:

  libblkid: minor change in man page (2011-07-26 16:46:00 +0200)

are available in the git repository at:
  https://github.com/kerolasa/lelux-utiliteetit misc

Sami Kerola (8):
      docs: remove README.namei
      chrt: conditional options & usage
      taskset: fix implicit overflow
      lib/loopdev: fix implicit overflows
      libmount/lock: fix implicit overflows
      lsblk: fix implicit overflows
      dmesg: fix implicit overflows
      libblkid: remove unnecessary test

 lib/loopdev.c                          |    8 ++--
 libblkid/src/superblocks/superblocks.c |    2 +-
 libmount/src/lock.c                    |    6 +-
 misc-utils/Makefile.am                 |    2 +-
 misc-utils/README.namei                |   31 --------------
 misc-utils/lsblk.c                     |    6 +-
 schedutils/chrt.c                      |   69 +++++++++++++++++++++++++++-----
 schedutils/taskset.c                   |    4 +-
 sys-utils/dmesg.c                      |   18 ++++----
 9 files changed, 82 insertions(+), 64 deletions(-)
 delete mode 100644 misc-utils/README.namei

diff --git a/lib/loopdev.c b/lib/loopdev.c
index 213063b..143aabc 100644
--- a/lib/loopdev.c
+++ b/lib/loopdev.c
@@ -239,7 +239,7 @@ int loopcxt_init_iterator(struct loopdev_cxt *lc, int flags)
 	memset(iter, 0, sizeof(*iter));
 	iter->ncur = -1;
 	iter->flags = flags;
-	iter->default_check = 1;
+	iter->default_check |= 1;

 	if (!lc->extra_check) {
 		/*
@@ -249,7 +249,7 @@ int loopcxt_init_iterator(struct loopdev_cxt *lc, int flags)
 		    stat(_PATH_DEV_LOOP, &st) == 0 && S_ISDIR(st.st_mode))
 			lc->flags |= LOOPDEV_FL_DEVSUBDIR;

-		lc->extra_check = 1;
+		lc->extra_check |= 1;
 	}
 	return 0;
 }
@@ -273,7 +273,7 @@ int loopcxt_deinit_iterator(struct loopdev_cxt *lc)
 		fclose(iter->proc);
 	iter->minors = NULL;
 	iter->proc = NULL;
-	iter->done = 1;
+	iter->done |= 1;
 	return 0;
 }

@@ -487,7 +487,7 @@ struct loop_info64 *loopcxt_get_info(struct loopdev_cxt *lc)
 		return NULL;

 	if (ioctl(fd, LOOP_GET_STATUS64, &lc->info) == 0) {
-		lc->has_info = 1;
+		lc->has_info |= 1;
 		return &lc->info;
 	}

diff --git a/libblkid/src/superblocks/superblocks.c
b/libblkid/src/superblocks/superblocks.c
index 9b618b2..caa9720 100644
--- a/libblkid/src/superblocks/superblocks.c
+++ b/libblkid/src/superblocks/superblocks.c
@@ -306,7 +306,7 @@ int blkid_known_fstype(const char *fstype)
  */
 int blkid_superblocks_get_name(size_t idx, const char **name, int *usage)
 {
-	if (idx >= 0 && idx < ARRAY_SIZE(idinfos)) {
+	if (idx < ARRAY_SIZE(idinfos)) {
 		if (name)
 			*name = idinfos[idx]->name;
 		if (usage)
diff --git a/libmount/src/lock.c b/libmount/src/lock.c
index a6619b3..088ebed 100644
--- a/libmount/src/lock.c
+++ b/libmount/src/lock.c
@@ -224,7 +224,7 @@ static int lock_simplelock(struct libmnt_lock *ml)
 		rc = -errsv;
 		goto err;
 	}
-	ml->locked = 1;
+	ml->locked |= 1;
 	return 0;
 err:
 	if (ml->sigblock)
@@ -346,7 +346,7 @@ static void unlock_mtab(struct libmnt_lock *ml)

 		if (!stat(ml->lockfile, &lo) && !stat(ml->linkfile, &li) &&
 		    lo.st_dev == li.st_dev && lo.st_ino == li.st_ino)
-			ml->locked = 1;
+			ml->locked |= 1;
 	}

 	if (ml->linkfile)
@@ -417,7 +417,7 @@ static int lock_mtab(struct libmnt_lock *ml)

 		j = link(linkfile, lockfile);
 		if (j == 0)
-			ml->locked = 1;
+			ml->locked |= 1;

 		if (j < 0 && errno != EEXIST) {
 			if (errno > 0)
diff --git a/misc-utils/Makefile.am b/misc-utils/Makefile.am
index 0644373..9e2e66b 100644
--- a/misc-utils/Makefile.am
+++ b/misc-utils/Makefile.am
@@ -8,7 +8,7 @@ usrsbin_exec_PROGRAMS =

 usrbin_exec_PROGRAMS = cal ddate logger look mcookie namei whereis

-EXTRA_DIST += README.cal README.ddate README.namei
+EXTRA_DIST += README.cal README.ddate

 logger_SOURCES = logger.c $(top_srcdir)/lib/strutils.c
 mcookie_SOURCES = mcookie.c $(top_srcdir)/lib/md5.c
diff --git a/misc-utils/README.namei b/misc-utils/README.namei
deleted file mode 100644
index 490939e..0000000
--- a/misc-utils/README.namei
+++ /dev/null
@@ -1,31 +0,0 @@
-Tired of running into "Too many levels of symlinks" problems on
-your 4.2 BSD derivitive machine?
-
-We sure did... our NFS'ed network of lots of Suns, Vaxen and so forth
-made it impossible at times to trace down where a file REALLY lived.
-I mean ls -l is nice, but wouldn't you like to follow things like
-the namei routine in the kernel does?
-
-Well here it is.... the namei program.  It follows things out until
-a terminal state is found.
-
-This program compiles and runs under:
-
-    SunOS 4.0.1 (sun3's)
-    SunOS 4.0.3 (sun4's)
-    SunOS 4.1.1 (sun4's)
-    Ultrix 3.1
-    BSD 4.3
-
-and probably a host of other 4.2 derived systems (but probably not
-System V).
-
-Anyway, if anyone has any bugs (or enhancements), please send them to
-me in E-mail form.
-
-And, by the way, if you make LOTS of money off of this program, please
-don't tell me :-).
-
-    -Roger      (rogers@fangorn.wr.tek.com)
-		UUCP:	...!uunet!tektronix!fangorn.wr.tek.com!rogers
-		ARPA:	<rogers%fangorn.wr.tek.com@RELAY.CS.NET>
diff --git a/misc-utils/lsblk.c b/misc-utils/lsblk.c
index 2e2c457..7457ae1 100644
--- a/misc-utils/lsblk.c
+++ b/misc-utils/lsblk.c
@@ -940,13 +940,13 @@ int main(int argc, char *argv[])
 	while((c = getopt_long(argc, argv, "abdDe:fhlnmo:Pirt", longopts,
NULL)) != -1) {
 		switch(c) {
 		case 'a':
-			lsblk->all_devices = 1;
+			lsblk->all_devices |= 1;
 			break;
 		case 'b':
-			lsblk->bytes = 1;
+			lsblk->bytes |= 1;
 			break;
 		case 'd':
-			lsblk->nodeps = 1;
+			lsblk->nodeps |= 1;
 			break;
 		case 'D':
 			columns[ncolumns++] = COL_NAME;
diff --git a/schedutils/chrt.c b/schedutils/chrt.c
index 58b71b5..2bbc657 100644
--- a/schedutils/chrt.c
+++ b/schedutils/chrt.c
@@ -34,6 +34,7 @@

 #include "strutils.h"
 #include "procutils.h"
+#include "xalloc.h"

 /* the SCHED_BATCH is supported since Linux 2.6.16
  *  -- temporary workaround for people with old glibc headers
@@ -67,13 +68,20 @@ static void __attribute__((__noreturn__)) show_usage(int rc)
 	"  chrt [options] {<pid> | <command> [<arg> ...]}\n"));

 	fprintf(out, _(
-	"\nScheduling policies:\n"
-	"  -b | --batch         set policy to SCHED_BATCH\n"
-	"  -f | --fifo          set policy to SCHED_FIFO\n"
-	"  -i | --idle          set policy to SCHED_IDLE\n"
+	"\nScheduling policies:\n"));
+#ifdef SCHED_BATCH
+	fprintf(out, _(
+	"  -b | --batch         set policy to SCHED_BATCH\n"));
+#endif
+	fprintf(out, _(
+	"  -f | --fifo          set policy to SCHED_FIFO\n"));
+#ifdef SCHED_IDLE
+	fprintf(out, _(
+	"  -i | --idle          set policy to SCHED_IDLE\n"));
+#endif
+	fprintf(out, _(
 	"  -o | --other         set policy to SCHED_OTHER\n"
 	"  -r | --rr            set policy to SCHED_RR (default)\n"));
-
 #ifdef SCHED_RESET_ON_FORK
 	fprintf(out, _(
 	"\nScheduling flags:\n"
@@ -192,24 +200,63 @@ static void show_min_max(void)
 	}
 }

+char *get_shortopts(const char *short_only, const struct option *longopts)
+{
+	char *shortopts;
+	int nopts;
+	int mopts = 16;
+
+	shortopts = xmalloc(sizeof(char) * mopts);
+	for (nopts = 0; short_only[0] != '\0'; short_only++) {
+		shortopts[nopts] = short_only[0];
+		nopts++;
+		if (nopts == mopts) {
+			mopts *= 2;
+			shortopts = xrealloc(shortopts, sizeof(char) * mopts);
+		}
+
+	}
+	for (; longopts->name != NULL; longopts++) {
+		if (longopts->val < CHAR_MAX) {
+			shortopts[nopts] = longopts->val;
+			nopts++;
+			if (nopts == mopts) {
+				mopts *= 2;
+				shortopts =
+				    xrealloc(shortopts, sizeof(char) * mopts);
+			}
+		}
+	}
+	shortopts[nopts] = '\0';
+
+	return shortopts;
+}
+
 int main(int argc, char **argv)
 {
 	int i, policy = SCHED_RR, priority = 0, verbose = 0, policy_flag = 0,
 	    all_tasks = 0;
+	char *shortopts;
 	struct sched_param sp;
 	pid_t pid = -1;

 	static const struct option longopts[] = {
 		{ "all-tasks",  0, NULL, 'a' },
+#ifdef SCHED_BATCH
 		{ "batch",	0, NULL, 'b' },
+#endif
 		{ "fifo",	0, NULL, 'f' },
+#ifdef SCHED_IDLE
 		{ "idle",	0, NULL, 'i' },
+#endif
 		{ "pid",	0, NULL, 'p' },
 		{ "help",	0, NULL, 'h' },
 		{ "max",        0, NULL, 'm' },
 		{ "other",	0, NULL, 'o' },
 		{ "rr",		0, NULL, 'r' },
+#ifdef SCHED_RESET_ON_FORK
 		{ "reset-on-fork", 0, NULL, 'R' },
+#endif
 		{ "verbose",	0, NULL, 'v' },
 		{ "version",	0, NULL, 'V' },
 		{ NULL,		0, NULL, 0 }
@@ -219,7 +266,8 @@ int main(int argc, char **argv)
 	bindtextdomain(PACKAGE, LOCALEDIR);
 	textdomain(PACKAGE);

-	while((i = getopt_long(argc, argv, "+abfiphmoRrvV", longopts, NULL)) != -1)
+	shortopts = get_shortopts("+", longopts);
+	while((i = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
 	{
 		int ret = EXIT_FAILURE;

@@ -227,11 +275,11 @@ int main(int argc, char **argv)
 		case 'a':
 			all_tasks = 1;
 			break;
-		case 'b':
 #ifdef SCHED_BATCH
+		case 'b':
 			policy = SCHED_BATCH;
-#endif
 			break;
+#endif
 		case 'f':
 			policy = SCHED_FIFO;
 			break;
@@ -240,11 +288,11 @@ int main(int argc, char **argv)
 			policy_flag |= SCHED_RESET_ON_FORK;
 			break;
 #endif
-		case 'i':
 #ifdef SCHED_IDLE
+		case 'i':
 			policy = SCHED_IDLE;
-#endif
 			break;
+#endif
 		case 'm':
 			show_min_max();
 			return EXIT_SUCCESS;
@@ -271,6 +319,7 @@ int main(int argc, char **argv)
 			show_usage(ret);
 		}
 	}
+	free(shortopts);

 	if (((pid > -1) && argc - optind < 1) ||
 	    ((pid == -1) && argc - optind < 2))
diff --git a/schedutils/taskset.c b/schedutils/taskset.c
index 3a0db8f..d874693 100644
--- a/schedutils/taskset.c
+++ b/schedutils/taskset.c
@@ -159,7 +159,7 @@ int main(int argc, char **argv)
 					    _("failed to parse pid"));
 			break;
 		case 'c':
-			ts.use_list = 1;
+			ts.use_list |= 1;
 			break;
 		case 'V':
 			printf("%s from %s\n", program_invocation_short_name,
@@ -205,7 +205,7 @@ int main(int argc, char **argv)
 		err(EXIT_FAILURE, _("cpuset_alloc failed"));

 	if (argc - optind == 1)
-		ts.get_only = 1;
+		ts.get_only |= 1;

 	else if (ts.use_list) {
 		if (cpulist_parse(argv[optind], new_set, new_setsize))
diff --git a/sys-utils/dmesg.c b/sys-utils/dmesg.c
index 7123c7f..1282411 100644
--- a/sys-utils/dmesg.c
+++ b/sys-utils/dmesg.c
@@ -667,24 +667,24 @@ int main(int argc, char *argv[])
 			cmd = SYSLOG_ACTION_CONSOLE_OFF;
 			break;
 		case 'd':
-			ctl.delta = 1;
+			ctl.delta |= 1;
 			break;
 		case 'E':
 			cmd = SYSLOG_ACTION_CONSOLE_ON;
 			break;
 		case 'f':
-			ctl.fltr_fac = 1;
+			ctl.fltr_fac |= 1;
 			list_to_bitarray(optarg, parse_facility, ctl.facilities);
 			break;
 		case 'h':
 			usage(stdout);
 			break;
 		case 'k':
-			ctl.fltr_fac = 1;
+			ctl.fltr_fac |= 1;
 			setbit(ctl.facilities, FAC_BASE(LOG_KERN));
 			break;
 		case 'l':
-			ctl.fltr_lev= 1;
+			ctl.fltr_lev |= 1;
 			list_to_bitarray(optarg, parse_level, ctl.levels);
 			break;
 		case 'n':
@@ -692,7 +692,7 @@ int main(int argc, char *argv[])
 			console_level = parse_level(optarg, 0);
 			break;
 		case 'r':
-			ctl.raw = 1;
+			ctl.raw |= 1;
 			break;
 		case 's':
 			bufsize = strtol_or_err(optarg,
@@ -703,13 +703,13 @@ int main(int argc, char *argv[])
 		case 'T':
 			ctl.boot_time = get_boot_time();
 			if (ctl.boot_time)
-				ctl.ctime = 1;
+				ctl.ctime |= 1;
 			break;
 		case 't':
-			ctl.notime = 1;
+			ctl.notime |= 1;
 			break;
 		case 'u':
-			ctl.fltr_fac = 1;
+			ctl.fltr_fac |= 1;
 			for (n = 1; n < ARRAY_SIZE(facility_names); n++)
 				setbit(ctl.facilities, n);
 			break;
@@ -718,7 +718,7 @@ int main(int argc, char *argv[])
 						  PACKAGE_STRING);
 			return EXIT_SUCCESS;
 		case 'x':
-			ctl.decode = 1;
+			ctl.decode |= 1;
 			break;
 		case '?':
 		default:

-- 
   Sami Kerola
   http://www.iki.fi/kerolasa/

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [git pull] miscellaneous compiler warning fixes etc
  2011-07-28 21:33 [git pull] miscellaneous compiler warning fixes etc Sami Kerola
@ 2011-07-28 22:44 ` Karel Zak
  2011-07-29  8:46   ` Karel Zak
  2011-08-02 12:32 ` Karel Zak
  1 sibling, 1 reply; 6+ messages in thread
From: Karel Zak @ 2011-07-28 22:44 UTC (permalink / raw)
  To: kerolasa; +Cc: util-linux

On Thu, Jul 28, 2011 at 11:33:42PM +0200, Sami Kerola wrote:
> -	iter->done = 1;
> +	iter->done |= 1;

 Why we need this change? IMHO it's unnecessary. "A bit-field is
 interpreted as a signed or unsigned integer type consisting of the
 specified number of bits." (C99)

 [...]

> -	while((i = getopt_long(argc, argv, "+abfiphmoRrvV", longopts, NULL)) != -1)
> +	shortopts = get_shortopts("+", longopts);
> +	while((i = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
>  	{
>  		int ret = EXIT_FAILURE;
> 
> @@ -227,11 +275,11 @@ int main(int argc, char **argv)
>  		case 'a':
>  			all_tasks = 1;
>  			break;
> -		case 'b':
>  #ifdef SCHED_BATCH
> +		case 'b':
>  			policy = SCHED_BATCH;
> -#endif
>  			break;
> +#endif
>  		case 'f':
>  			policy = SCHED_FIFO;
>  			break;
> @@ -240,11 +288,11 @@ int main(int argc, char **argv)
>  			policy_flag |= SCHED_RESET_ON_FORK;
>  			break;
>  #endif
> -		case 'i':
>  #ifdef SCHED_IDLE
> +		case 'i':
>  			policy = SCHED_IDLE;
> -#endif
>  			break;
> +#endif
>  		case 'm':
>  			show_min_max();
>  			return EXIT_SUCCESS;
> @@ -271,6 +319,7 @@ int main(int argc, char **argv)
>  			show_usage(ret);
>  		}
>  	}
> +	free(shortopts);

 Hmm... I don't like this patch. 

 Command line options are our API, and the API should be stable
 independently on supported features. The #ifdef for command 
 line options suck...

 Note that SCHED_RESET_ON_FORK should be fixed and -R should be
 silently ignored (now whole "case SCHED_RESET_ON_FORK:" is #ifdefed.

    Karel

-- 
 Karel Zak  <kzak@redhat.com>
 http://karelzak.blogspot.com

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [git pull] miscellaneous compiler warning fixes etc
  2011-07-28 22:44 ` Karel Zak
@ 2011-07-29  8:46   ` Karel Zak
  2011-07-29  9:03     ` Sami Kerola
  0 siblings, 1 reply; 6+ messages in thread
From: Karel Zak @ 2011-07-29  8:46 UTC (permalink / raw)
  To: kerolasa; +Cc: util-linux

On Fri, Jul 29, 2011 at 12:44:30AM +0200, Karel Zak wrote:
> On Thu, Jul 28, 2011 at 11:33:42PM +0200, Sami Kerola wrote:
> > -	iter->done = 1;
> > +	iter->done |= 1;
> 
>  Why we need this change? IMHO it's unnecessary.

 The bit-fields should probably "unsigned int" for better portability, 
 (otherwise it's implementation-defined). I'll fix it.

    Karel

-- 
 Karel Zak  <kzak@redhat.com>
 http://karelzak.blogspot.com

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [git pull] miscellaneous compiler warning fixes etc
  2011-07-29  8:46   ` Karel Zak
@ 2011-07-29  9:03     ` Sami Kerola
  2011-07-29  9:07       ` Karel Zak
  0 siblings, 1 reply; 6+ messages in thread
From: Sami Kerola @ 2011-07-29  9:03 UTC (permalink / raw)
  To: Karel Zak; +Cc: util-linux

On Fri, Jul 29, 2011 at 10:46, Karel Zak <kzak@redhat.com> wrote:
> On Fri, Jul 29, 2011 at 12:44:30AM +0200, Karel Zak wrote:
>> On Thu, Jul 28, 2011 at 11:33:42PM +0200, Sami Kerola wrote:
>> > - =A0 iter->done =3D 1;
>> > + =A0 iter->done |=3D 1;
>>
>> =A0Why we need this change? IMHO it's unnecessary.
>
> =A0The bit-fields should probably "unsigned int" for better portability,
> =A0(otherwise it's implementation-defined). I'll fix it.

My thinking with implicit overflow fixes where that the warning may
mean there is a weird behaving bug. Making sure that the whole source
compiles without implicit overflow warnings makes tracing of these
easier. I used same rationality to the only `is always true/false'
warnings.

Getting the chrt usage & options right clearly has to wait
instructions in Documentation directory.

--=20
=A0=A0 Sami Kerola
=A0=A0 http://www.iki.fi/kerolasa/

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [git pull] miscellaneous compiler warning fixes etc
  2011-07-29  9:03     ` Sami Kerola
@ 2011-07-29  9:07       ` Karel Zak
  0 siblings, 0 replies; 6+ messages in thread
From: Karel Zak @ 2011-07-29  9:07 UTC (permalink / raw)
  To: kerolasa; +Cc: util-linux

On Fri, Jul 29, 2011 at 11:03:04AM +0200, Sami Kerola wrote:
> On Fri, Jul 29, 2011 at 10:46, Karel Zak <kzak@redhat.com> wrote:
> > On Fri, Jul 29, 2011 at 12:44:30AM +0200, Karel Zak wrote:
> >> On Thu, Jul 28, 2011 at 11:33:42PM +0200, Sami Kerola wrote:
> >> > -   iter->done = 1;
> >> > +   iter->done |= 1;
> >>
> >>  Why we need this change? IMHO it's unnecessary.
> >
> >  The bit-fields should probably "unsigned int" for better portability,
> >  (otherwise it's implementation-defined). I'll fix it.
> 
> My thinking with implicit overflow fixes where that the warning may
> mean there is a weird behaving bug. Making sure that the whole source
> compiles without implicit overflow warnings makes tracing of these
> easier. I used same rationality to the only `is always true/false'
> warnings.

 Please, copy & past compiler command line and the warnings. I don't
 see any warnings with gcc 4.6.0.

    Karel

-- 
 Karel Zak  <kzak@redhat.com>
 http://karelzak.blogspot.com

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [git pull] miscellaneous compiler warning fixes etc
  2011-07-28 21:33 [git pull] miscellaneous compiler warning fixes etc Sami Kerola
  2011-07-28 22:44 ` Karel Zak
@ 2011-08-02 12:32 ` Karel Zak
  1 sibling, 0 replies; 6+ messages in thread
From: Karel Zak @ 2011-08-02 12:32 UTC (permalink / raw)
  To: kerolasa; +Cc: util-linux

On Thu, Jul 28, 2011 at 11:33:42PM +0200, Sami Kerola wrote:
>       docs: remove README.namei

 Applied, thanks.

-- 
 Karel Zak  <kzak@redhat.com>
 http://karelzak.blogspot.com

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2011-08-02 12:32 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-07-28 21:33 [git pull] miscellaneous compiler warning fixes etc Sami Kerola
2011-07-28 22:44 ` Karel Zak
2011-07-29  8:46   ` Karel Zak
2011-07-29  9:03     ` Sami Kerola
2011-07-29  9:07       ` Karel Zak
2011-08-02 12:32 ` Karel Zak

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox