[26723] in Source-Commits

home help back first fref pref prev next nref lref last post

/svn/athena r25710 - trunk/athena/bin/desync

daemon@ATHENA.MIT.EDU (Jonathan D Reed)
Tue Aug 7 19:57:09 2012

Date: Tue, 7 Aug 2012 19:57:06 -0400
From: Jonathan D Reed <jdreed@MIT.EDU>
Message-Id: <201208072357.q77Nv6lK001807@drugstore.mit.edu>
To: source-commits@MIT.EDU
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Author: jdreed
Date: 2012-08-07 19:57:06 -0400 (Tue, 07 Aug 2012)
New Revision: 25710

Modified:
   trunk/athena/bin/desync/desync.1
   trunk/athena/bin/desync/desync.c
Log:
Update usage and enforce limits in crontab mode

Modified: trunk/athena/bin/desync/desync.1
===================================================================
--- trunk/athena/bin/desync/desync.1	2012-08-07 19:58:58 UTC (rev 25709)
+++ trunk/athena/bin/desync/desync.1	2012-08-07 23:57:06 UTC (rev 25710)
@@ -24,7 +24,7 @@
 timefile ] [ range ]
 
 .B desync -c
-hours [ range ] [ other arguments ]
+hours [ range [ other arguments ] ]
 .SH DESCRIPTION
 .I desync
 is a tool which sleeps a random (hostname seeded) period of time (up
@@ -44,7 +44,8 @@
 .TP 8
 .B range
 This optional range specifies, in seconds, the maximum value for the
-randomly selected sleep time.  The default value is 3600.
+randomly selected sleep time.  The default value is 3600 (except in
+"crontab" mode, see below).
 .TP 8
 .B \-h name
 Use
@@ -106,16 +107,20 @@
 .B \-c hours
 This option changes the behavior of
 .I desync
-and causes it to generate output suitable for use in a crontab file.
-This is useful on modern Linux distributions, where sleeping for
-extended periods inside a cron job can confuse power management software
-or packages such as ConsoleKit, and running a cron job every 5 minutes
-to see if desync thinks it is "time to run" is undesirable.  Since
-desync will generate the same value each time on the same machine, it is
-fine to generate crontab files in a package's post-install script, for
-example.  In this mode, desync will output the crontab fields and then
-any additional arguments you supply.  So to generate a crontab with a
-randomized job, one might do something like this:
+and causes it to generate output suitable for use in a crontab file.  It
+also changes the units of 
+.I range
+to minutes (from seconds), changes the default value to 60 and enforces
+a maximum value of 1439.  This is useful on modern Linux distributions,
+where sleeping for extended periods inside a cron job can confuse power
+management software or packages such as ConsoleKit, and running a cron
+job every 5 minutes to see if desync thinks it is "time to run" is
+undesirable.  Since desync will generate the same value each time on the
+same machine, it is fine to generate crontab files in a package's
+post-install script, for example.  In this mode, desync will output the
+crontab fields and then any additional arguments you supply.  So to
+generate a crontab with a randomized job, one might do something like
+this:
 
 .nf
 	for i in 2 4 8 14 20; do

Modified: trunk/athena/bin/desync/desync.c
===================================================================
--- trunk/athena/bin/desync/desync.c	2012-08-07 19:58:58 UTC (rev 25709)
+++ trunk/athena/bin/desync/desync.c	2012-08-07 23:57:06 UTC (rev 25710)
@@ -95,9 +95,10 @@
     argc -= 1;
     argv += 1;
   } else {
-    range = 3600;
+    range = crontabhour == NULL ? 3600 : 60;
   }
-  if (range == 0)
+  if ((range == 0) ||
+      (crontabhour && (range >= 1440)))
     {
       fprintf(stderr, "%s: Invalid range value\n", progname);
       usage();
@@ -234,6 +235,6 @@
 static void usage()
 {
   fprintf(stderr,
-	  "Usage: %s [-h name] [-n] [-t timefile] [range]\n       %s -c hour [range] [crontab arguments]\n",
+	  "Usage: %s [-h name] [-n] [-t timefile] [range]\n       %s -c hour [range [crontab arguments]]\n",
 	  progname, progname);
 }


home help back first fref pref prev next nref lref last post