bin/51070: add -p option to pom [PATCH]

Matt Koivisto MattK at SANDVINE.com
Wed Apr 16 14:40:08 PDT 2003


>Number:         51070
>Category:       bin
>Synopsis:       add -p option to pom [PATCH]
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Wed Apr 16 14:40:06 PDT 2003
>Closed-Date:
>Last-Modified:
>Originator:     Matt Koivisto
>Release:        FreeBSD 4.7-STABLE i386
>Organization:
>Environment:
>Description:
	No easy way to use pom from a shell script

E.g. Now you can do
	if [ `pom -p` -gt 50 ]
>How-To-Repeat:
>Fix:

--- /usr/src/games/pom/pom.c	Mon Nov 29 22:49:09 1999
+++ ./pom.c	Wed Apr 16 17:05:39 2003
@@ -54,12 +54,14 @@
  * particular piece of code was adapted from.
  *
  * -- Keith E. Brandt  VIII 1984
+ * -- -p option added by Matt Koivisto 2003 (btw, I was 2 in 1984)
  *
  */
 
 #include <time.h>
 #include <stdio.h>
 #include <math.h>
+#include <unistd.h>
 
 #ifndef	PI
 #define	PI	  3.14159265358979323846
@@ -76,15 +78,32 @@
 static void	adj360 __P((double *));
 static double	dtor __P((double));
 static double	potm __P((double));
+static int parseable = 0;
 
 int
-main()
+main(argc, argv)
+    int argc;
+    char *argv[];
 {
 	time_t tt;
 	struct tm *GMT;
 	double days, today, tomorrow;
 	int cnt;
+	int ch;
 
+	while ((ch = getopt(argc, argv, "p")) != -1)
+	    switch (ch) {
+	    case 'p':
+		parseable = 1;
+		break;
+	    case '?':
+	    default:
+		(void)fprintf(stderr, "Usage: pom [-p]\n");
+		(void)fprintf(stderr, "\tWhere the options are:\n");
+		(void)fprintf(stderr, "\t-p : Return pom as a
percentage\n");
+		break;
+	    }
+    
 	(void) time(&tt);
 	GMT = gmtime(&tt);
 	days = (GMT->tm_yday + 1) + ((GMT->tm_hour +
@@ -92,6 +111,10 @@
 	for (cnt = EPOCH; cnt < GMT->tm_year; ++cnt)
 		days += isleap(1900 + cnt) ? 366 : 365;
 	today = potm(days) + .5;
+	if ((int)parseable == 1) {
+	    (void)printf("%1.0f\n", today);
+	    return 0;
+	}
 	(void)printf("The Moon is ");
 	if ((int)today == 100)
 		(void)printf("Full\n");
--- /usr/src/games/pom/pom.6	Sun Jul 22 07:32:37 2001
+++ pom.6	Wed Apr 16 17:22:24 2003
@@ -32,15 +32,24 @@
 .\"	@(#)pom.6	8.1 (Berkeley) 5/31/93
 .\" $FreeBSD$
 .\"
-.TH POM 6 "May 31, 1993"
-.UC 7
-.SH NAME
-pom \- display the phase of the moon
-.SH SYNOPSIS
-.B pom
-.SH DESCRIPTION
+.Dd May 31, 1993
+.Dt POM 6
+.Os
+.Sh NAME
+.Nm pom
+.Nd \- display the phase of the moon
+.Sh SYNOPSIS
+.Nm
+.Op Fl p
+.Sh DESCRIPTION
 The
 .I pom
 utility displays the current phase of the moon.
 Useful for selecting software completion target dates and predicting
 managerial behavior.
+.Pp
+The following options are available:
+.Bl -tag -width indent
+.It Fl p
+print just the phase as a percent, useful within a shell script.
+.El
>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list