about summary refs log tree commit diff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1997-05-25 15:50:36 +0000
committerUlrich Drepper <drepper@redhat.com>1997-05-25 15:50:36 +0000
commitc0a119316e3cf2247fe9b2c3d6fbbddebb7dbca8 (patch)
tree9c5012aae813e75d5043f7f35f659f24abffda34
parentae2eaff13eb43834f7b36562ad343c14842bcd0f (diff)
downloadglibc-c0a119316e3cf2247fe9b2c3d6fbbddebb7dbca8.tar.gz
glibc-c0a119316e3cf2247fe9b2c3d6fbbddebb7dbca8.tar.xz
glibc-c0a119316e3cf2247fe9b2c3d6fbbddebb7dbca8.zip
Make 2nd para for scheck const. Update zic.c.
-rw-r--r--time/private.h2
-rw-r--r--time/scheck.c2
-rw-r--r--time/zic.c21
3 files changed, 19 insertions, 6 deletions
diff --git a/time/private.h b/time/private.h
index 5a5b516d0f..e32653b76d 100644
--- a/time/private.h
+++ b/time/private.h
@@ -182,7 +182,7 @@ char *	imalloc P((int n));
 void *	irealloc P((void * pointer, int size));
 void	icfree P((char * pointer));
 void	ifree P((char * pointer));
-char *  scheck P((const char *string, char *format));
+char *  scheck P((const char *string, const char *format));
 
 
 /*
diff --git a/time/scheck.c b/time/scheck.c
index b51f58d042..52b4ff51fd 100644
--- a/time/scheck.c
+++ b/time/scheck.c
@@ -11,7 +11,7 @@ static char	elsieid[] = "@(#)scheck.c	8.14";
 char *
 scheck(string, format)
 const char * const	string;
-char * const		format;
+const char * const	format;
 {
 	register char *		fbuf;
 	register const char *	fp;
diff --git a/time/zic.c b/time/zic.c
index b9518c4649..c95887c9b4 100644
--- a/time/zic.c
+++ b/time/zic.c
@@ -1,6 +1,6 @@
 #ifndef lint
 #ifndef NOID
-static char	elsieid[] = "@(#)zic.c	7.83";
+static char	elsieid[] = "@(#)zic.c	7.87";
 #endif /* !defined NOID */
 #endif /* !defined lint */
 
@@ -141,8 +141,10 @@ static int		leapcnt;
 static int		linenum;
 static time_t		max_time;
 static int		max_year;
+static int		max_year_representable;
 static time_t		min_time;
 static int		min_year;
+static int		min_year_representable;
 static int		noise;
 static const char *	rfilename;
 static int		rlinenum;
@@ -430,7 +432,7 @@ const char * const	string;
 
 	cp = ecpyalloc("warning: ");
 	cp = ecatalloc(cp, string);
-	error(string);
+	error(cp);
 	ifree(cp);
 	--errors;
 }
@@ -649,6 +651,8 @@ setboundaries P((void))
 	}
 	min_year = TM_YEAR_BASE + gmtime(&min_time)->tm_year;
 	max_year = TM_YEAR_BASE + gmtime(&max_time)->tm_year;
+	min_year_representable = min_year;
+	max_year_representable = max_year;
 }
 
 static int
@@ -1218,6 +1222,7 @@ const char * const		timep;
 				rp->r_todisstd = FALSE;
 				rp->r_todisgmt = FALSE;
 				*ep = '\0';
+				break;
 			case 'g':	/* Greenwich */
 			case 'u':	/* Universal */
 			case 'z':	/* Zulu */
@@ -1249,7 +1254,11 @@ const char * const		timep;
 	} else if (sscanf(cp, scheck(cp, "%d"), &rp->r_loyear) != 1) {
 		error(_("invalid starting year"));
 		return;
-	}
+	} else if (noise)
+		if (rp->r_loyear < min_year_representable)
+			warning(_("starting year too low to be represented"));
+		else if (rp->r_loyear > max_year_representable)
+			warning(_("starting year too high to be represented"));
 	cp = hiyearp;
 	if ((lp = byword(cp, end_years)) != NULL) switch ((int) lp->l_value) {
 		case YR_MINIMUM:
@@ -1269,7 +1278,11 @@ const char * const		timep;
 	} else if (sscanf(cp, scheck(cp, "%d"), &rp->r_hiyear) != 1) {
 		error(_("invalid ending year"));
 		return;
-	}
+	} else if (noise)
+		if (rp->r_loyear < min_year_representable)
+			warning(_("starting year too low to be represented"));
+		else if (rp->r_loyear > max_year_representable)
+			warning(_("starting year too high to be represented"));
 	if (rp->r_loyear > rp->r_hiyear) {
 		error(_("starting year greater than ending year"));
 		return;