From radar@maarsy-acq.gsoft.com.au  Tue Mar 29 06:49:40 2011
Return-Path: <radar@maarsy-acq.gsoft.com.au>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 1D3CA106566B
	for <FreeBSD-gnats-submit@freebsd.org>; Tue, 29 Mar 2011 06:49:40 +0000 (UTC)
	(envelope-from radar@maarsy-acq.gsoft.com.au)
Received: from maarsy-acq.gsoft.com.au (unknown [IPv6:2001:44b8:7c07:5581:225:90ff:fe32:91e])
	by mx1.freebsd.org (Postfix) with ESMTP id 60EA68FC0C
	for <FreeBSD-gnats-submit@freebsd.org>; Tue, 29 Mar 2011 06:49:38 +0000 (UTC)
Received: from maarsy-acq.gsoft.com.au (localhost [127.0.0.1])
	by maarsy-acq.gsoft.com.au (8.14.4/8.14.4) with ESMTP id p2T6nbYS091654
	for <FreeBSD-gnats-submit@freebsd.org>; Tue, 29 Mar 2011 06:49:37 GMT
	(envelope-from radar@maarsy-acq.gsoft.com.au)
Received: (from radar@localhost)
	by maarsy-acq.gsoft.com.au (8.14.4/8.14.4/Submit) id p2T6nbKc091653;
	Tue, 29 Mar 2011 06:49:37 GMT
	(envelope-from radar)
Message-Id: <201103290649.p2T6nbKc091653@maarsy-acq.gsoft.com.au>
Date: Tue, 29 Mar 2011 06:49:37 GMT
From: "Daniel O'Connor" <doconnor@gsoft.com.au>
To: FreeBSD-gnats-submit@freebsd.org
Cc:
Subject: Add a menu entry to tzsetup to select UTC
X-Send-Pr-Version: 3.113
X-GNATS-Notify:

>Number:         156019
>Category:       bin
>Synopsis:       Add a menu entry to tzsetup to select UTC
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    edwin
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Tue Mar 29 06:50:08 UTC 2011
>Closed-Date:    Thu Apr 07 07:35:07 UTC 2011
>Last-Modified:  Thu Apr  7 07:40:10 UTC 2011
>Originator:     Radar User
>Release:        FreeBSD 9.0-CURRENT amd64
>Organization:
>Environment:
System: FreeBSD maarsy-acq.gsoft.com.au 9.0-CURRENT FreeBSD 9.0-CURRENT #0 r219926M: Sat Mar 26 02:15:22 UTC 2011 root@maarsy-acq.gsoft.com.au:/usr/obj/usr/src/sys/GENERIC amd64


>Description:
This patch allows you to select UTC as a time zone (which removes /etc/localtime)

Reviewed by: Garrett Cooper <gcooper@FreeBSD.org>

>How-To-Repeat:
>Fix:

http://www.gsoft.com.au/~doconnor/tzsetup-utc-menu.diff

# This is a shell archive.  Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file".  Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
#	tzsetup-utc-menu.diff
#
echo x - tzsetup-utc-menu.diff
sed 's/^X//' >tzsetup-utc-menu.diff << '25aa59230e4eb211a79aefc8fd34a91c'
X--- tzsetup.c.orig	2011-03-23 08:46:40.000000000 +0000
X+++ tzsetup.c	2011-03-29 06:43:48.000000000 +0000
X@@ -66,10 +66,13 @@
X static char *chrootenv = NULL;
X 
X static void	usage(void);
X+static int	confirm_zone(const char *filename);
X static int	continent_country_menu(dialogMenuItem *);
X+static int	install_zoneinfo_file(const char *zoneinfo_file);
X static int	set_zone_multi(dialogMenuItem *);
X static int	set_zone_whole_country(dialogMenuItem *);
X static int	set_zone_menu(dialogMenuItem *);
X+static int	set_zone_utc(void);
X 
X struct continent {
X 	dialogMenuItem *menu;
X@@ -79,7 +82,7 @@
X };
X 
X static struct continent	africa, america, antarctica, arctic, asia, atlantic;
X-static struct continent	australia, europe, indian, pacific;
X+static struct continent	australia, europe, indian, pacific, utc;
X 
X static struct continent_names {
X 	const char	*name;
X@@ -94,7 +97,8 @@
X 	{ "Australia",	&australia },
X 	{ "Europe",	&europe },
X 	{ "Indian",	&indian },
X-	{ "Pacific",	&pacific }
X+	{ "Pacific",	&pacific },
X+	{ "UTC", 	&utc }
X };
X 
X static struct continent_items {
X@@ -110,7 +114,8 @@
X 	{ "7",	"Australia" },
X 	{ "8",	"Europe" },
X 	{ "9",	"Indian Ocean" },
X-	{ "0",	"Pacific Ocean" }
X+	{ "0",	"Pacific Ocean" },
X+	{ "a",	"UTC" }
X };
X 
X #define	NCONTINENTS	\
X@@ -128,6 +133,9 @@
X 	int		menulen;
X 	int		rv;
X 
X+	if (!strcmp(continent->title, "UTC"))
X+	        return set_zone_utc();	
X+
X 	/* Short cut -- if there's only one country, don't post a menu. */
X 	if (contp->nitems == 1)
X 		return (contp->menu[0].fire(&contp->menu[0]));
X@@ -502,6 +510,15 @@
X 	return (DITEM_LEAVE_MENU);
X }
X 
X+int
X+set_zone_utc(void)
X+{
X+	if (!confirm_zone(NULL))
X+		return (DITEM_FAILURE | DITEM_RECREATE);
X+		
X+	return (install_zoneinfo_file(NULL));
X+}
X+
X static int
X install_zoneinfo_file(const char *zoneinfo_file)
X {
X@@ -526,7 +543,7 @@
X 	else
X 		snprintf(prompt, sizeof(prompt),
X 		    "Creating symbolic link %s to %s",
X-		    path_localtime, zoneinfo_file);
X+		    path_localtime, zoneinfo_file == NULL ? "(UTC)" : zoneinfo_file);
X 	if (usedialog)
X 		dialog_notify(prompt);
X 	else
X@@ -534,6 +551,22 @@
X #endif
X 
X 	if (reallydoit) {
X+		if (zoneinfo_file == NULL) {
X+			if (unlink(path_localtime) < 0 && errno != ENOENT) {
X+				snprintf(title, sizeof(title), "Error");
X+				snprintf(prompt, sizeof(prompt),
X+					 "Could not delete %s: %s", path_localtime,
X+					 strerror(errno));
X+				if (usedialog)
X+					dialog_mesgbox(title, prompt, 8, 72);
X+				else
X+					fprintf(stderr, "%s\n", prompt);
X+
X+				return (DITEM_FAILURE | DITEM_RECREATE);
X+			}
X+			return (DITEM_LEAVE_MENU);
X+		}
X+		
X 		if (copymode) {
X 			fd1 = open(zoneinfo_file, O_RDONLY, 0);
X 			if (fd1 < 0) {
X@@ -656,7 +689,7 @@
X 	struct tm	*tm;
X 	int		rv;
X 	
X-	setenv("TZ", filename, 1);
X+	setenv("TZ", filename == NULL ? "" : filename, 1);
X 	tzset();
X 	tm = localtime(&t);
X 
25aa59230e4eb211a79aefc8fd34a91c
exit


>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-bugs->edwin 
Responsible-Changed-By: edwin 
Responsible-Changed-When: Wed Mar 30 21:12:38 UTC 2011 
Responsible-Changed-Why:  
Grab as requested by Daniel. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=156019 
State-Changed-From-To: open->patched 
State-Changed-By: edwin 
State-Changed-When: Wed Mar 30 21:31:01 UTC 2011 
State-Changed-Why:  
Commited to head, waiting for MFC. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=156019 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: bin/156019: commit references a PR
Date: Wed, 30 Mar 2011 21:33:35 +0000 (UTC)

 Author: edwin
 Date: Wed Mar 30 21:33:23 2011
 New Revision: 220172
 URL: http://svn.freebsd.org/changeset/base/220172
 
 Log:
   Add a menu entry for UTC in the main menu.
   
   PR:		bin/156019
   Submitted by:	Daniel O'Conner
   Reviewed by:	Garrett Cooper <gcooper@FreeBSD.org>
   MFC after:	1 week
 
 Modified:
   head/usr.sbin/tzsetup/tzsetup.c
 
 Modified: head/usr.sbin/tzsetup/tzsetup.c
 ==============================================================================
 --- head/usr.sbin/tzsetup/tzsetup.c	Wed Mar 30 21:22:25 2011	(r220171)
 +++ head/usr.sbin/tzsetup/tzsetup.c	Wed Mar 30 21:33:23 2011	(r220172)
 @@ -66,10 +66,13 @@ static int usedialog = 1;
  static char *chrootenv = NULL;
  
  static void	usage(void);
 +static int	confirm_zone(const char *filename);
  static int	continent_country_menu(dialogMenuItem *);
 +static int	install_zoneinfo_file(const char *zoneinfo_file);
  static int	set_zone_multi(dialogMenuItem *);
  static int	set_zone_whole_country(dialogMenuItem *);
  static int	set_zone_menu(dialogMenuItem *);
 +static int	set_zone_utc(void);
  
  struct continent {
  	dialogMenuItem *menu;
 @@ -79,7 +82,7 @@ struct continent {
  };
  
  static struct continent	africa, america, antarctica, arctic, asia, atlantic;
 -static struct continent	australia, europe, indian, pacific;
 +static struct continent	australia, europe, indian, pacific, utc;
  
  static struct continent_names {
  	const char	*name;
 @@ -94,7 +97,8 @@ static struct continent_names {
  	{ "Australia",	&australia },
  	{ "Europe",	&europe },
  	{ "Indian",	&indian },
 -	{ "Pacific",	&pacific }
 +	{ "Pacific",	&pacific },
 +	{ "UTC", 	&utc }
  };
  
  static struct continent_items {
 @@ -110,7 +114,8 @@ static struct continent_items {
  	{ "7",	"Australia" },
  	{ "8",	"Europe" },
  	{ "9",	"Indian Ocean" },
 -	{ "0",	"Pacific Ocean" }
 +	{ "0",	"Pacific Ocean" },
 +	{ "a",	"UTC" }
  };
  
  #define	NCONTINENTS	\
 @@ -128,6 +133,9 @@ continent_country_menu(dialogMenuItem *c
  	int		menulen;
  	int		rv;
  
 +	if (strcmp(continent->title, "UTC") == 0)
 +	        return set_zone_utc();	
 +
  	/* Short cut -- if there's only one country, don't post a menu. */
  	if (contp->nitems == 1)
  		return (contp->menu[0].fire(&contp->menu[0]));
 @@ -502,6 +510,15 @@ set_zone_menu(dialogMenuItem *dmi)
  	return (DITEM_LEAVE_MENU);
  }
  
 +int
 +set_zone_utc(void)
 +{
 +	if (!confirm_zone(NULL))
 +		return (DITEM_FAILURE | DITEM_RECREATE);
 +		
 +	return (install_zoneinfo_file(NULL));
 +}
 +
  static int
  install_zoneinfo_file(const char *zoneinfo_file)
  {
 @@ -526,7 +543,8 @@ install_zoneinfo_file(const char *zonein
  	else
  		snprintf(prompt, sizeof(prompt),
  		    "Creating symbolic link %s to %s",
 -		    path_localtime, zoneinfo_file);
 +		    path_localtime,
 +		    zoneinfo_file == NULL ? "(UTC)" : zoneinfo_file);
  	if (usedialog)
  		dialog_notify(prompt);
  	else
 @@ -534,6 +552,22 @@ install_zoneinfo_file(const char *zonein
  #endif
  
  	if (reallydoit) {
 +		if (zoneinfo_file == NULL) {
 +			if (unlink(path_localtime) < 0 && errno != ENOENT) {
 +				snprintf(title, sizeof(title), "Error");
 +				snprintf(prompt, sizeof(prompt),
 +				     "Could not delete %s: %s", path_localtime,
 +				     strerror(errno));
 +				if (usedialog)
 +					dialog_mesgbox(title, prompt, 8, 72);
 +				else
 +					fprintf(stderr, "%s\n", prompt);
 +
 +				return (DITEM_FAILURE | DITEM_RECREATE);
 +			}
 +			return (DITEM_LEAVE_MENU);
 +		}
 +		
  		if (copymode) {
  			fd1 = open(zoneinfo_file, O_RDONLY, 0);
  			if (fd1 < 0) {
 @@ -656,7 +690,7 @@ confirm_zone(const char *filename)
  	struct tm	*tm;
  	int		rv;
  	
 -	setenv("TZ", filename, 1);
 +	setenv("TZ", filename == NULL ? "" : filename, 1);
  	tzset();
  	tm = localtime(&t);
  
 _______________________________________________
 svn-src-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 
State-Changed-From-To: patched->closed 
State-Changed-By: edwin 
State-Changed-When: Thu Apr 7 07:34:51 UTC 2011 
State-Changed-Why:  
MFCd into stable/8 

http://www.freebsd.org/cgi/query-pr.cgi?pr=156019 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: bin/156019: commit references a PR
Date: Thu,  7 Apr 2011 07:34:14 +0000 (UTC)

 Author: edwin
 Date: Thu Apr  7 07:34:01 2011
 New Revision: 220411
 URL: http://svn.freebsd.org/changeset/base/220411
 
 Log:
   MFC of r220172
   
   Add a menu entry for UTC in the main menu.
   
   PR:             bin/156019
   Submitted by:   Daniel O'Conner
 
 Modified:
   stable/8/usr.sbin/tzsetup/tzsetup.c
 Directory Properties:
   stable/8/usr.sbin/tzsetup/   (props changed)
 
 Modified: stable/8/usr.sbin/tzsetup/tzsetup.c
 ==============================================================================
 --- stable/8/usr.sbin/tzsetup/tzsetup.c	Thu Apr  7 07:10:42 2011	(r220410)
 +++ stable/8/usr.sbin/tzsetup/tzsetup.c	Thu Apr  7 07:34:01 2011	(r220411)
 @@ -66,10 +66,13 @@ static int usedialog = 1;
  static char *chrootenv = NULL;
  
  static void	usage(void);
 +static int	confirm_zone(const char *filename);
  static int	continent_country_menu(dialogMenuItem *);
 +static int	install_zoneinfo_file(const char *zoneinfo_file);
  static int	set_zone_multi(dialogMenuItem *);
  static int	set_zone_whole_country(dialogMenuItem *);
  static int	set_zone_menu(dialogMenuItem *);
 +static int	set_zone_utc(void);
  
  struct continent {
  	dialogMenuItem *menu;
 @@ -79,7 +82,7 @@ struct continent {
  };
  
  static struct continent	africa, america, antarctica, arctic, asia, atlantic;
 -static struct continent	australia, europe, indian, pacific;
 +static struct continent	australia, europe, indian, pacific, utc;
  
  static struct continent_names {
  	const char	*name;
 @@ -94,7 +97,8 @@ static struct continent_names {
  	{ "Australia",	&australia },
  	{ "Europe",	&europe },
  	{ "Indian",	&indian },
 -	{ "Pacific",	&pacific }
 +	{ "Pacific",	&pacific },
 +	{ "UTC", 	&utc }
  };
  
  static struct continent_items {
 @@ -110,7 +114,8 @@ static struct continent_items {
  	{ "7",	"Australia" },
  	{ "8",	"Europe" },
  	{ "9",	"Indian Ocean" },
 -	{ "0",	"Pacific Ocean" }
 +	{ "0",	"Pacific Ocean" },
 +	{ "a",	"UTC" }
  };
  
  #define	NCONTINENTS	\
 @@ -128,6 +133,9 @@ continent_country_menu(dialogMenuItem *c
  	int		menulen;
  	int		rv;
  
 +	if (strcmp(continent->title, "UTC") == 0)
 +	        return set_zone_utc();	
 +
  	/* Short cut -- if there's only one country, don't post a menu. */
  	if (contp->nitems == 1)
  		return (contp->menu[0].fire(&contp->menu[0]));
 @@ -502,6 +510,15 @@ set_zone_menu(dialogMenuItem *dmi)
  	return (DITEM_LEAVE_MENU);
  }
  
 +int
 +set_zone_utc(void)
 +{
 +	if (!confirm_zone(NULL))
 +		return (DITEM_FAILURE | DITEM_RECREATE);
 +		
 +	return (install_zoneinfo_file(NULL));
 +}
 +
  static int
  install_zoneinfo_file(const char *zoneinfo_file)
  {
 @@ -526,7 +543,8 @@ install_zoneinfo_file(const char *zonein
  	else
  		snprintf(prompt, sizeof(prompt),
  		    "Creating symbolic link %s to %s",
 -		    path_localtime, zoneinfo_file);
 +		    path_localtime,
 +		    zoneinfo_file == NULL ? "(UTC)" : zoneinfo_file);
  	if (usedialog)
  		dialog_notify(prompt);
  	else
 @@ -534,6 +552,22 @@ install_zoneinfo_file(const char *zonein
  #endif
  
  	if (reallydoit) {
 +		if (zoneinfo_file == NULL) {
 +			if (unlink(path_localtime) < 0 && errno != ENOENT) {
 +				snprintf(title, sizeof(title), "Error");
 +				snprintf(prompt, sizeof(prompt),
 +				     "Could not delete %s: %s", path_localtime,
 +				     strerror(errno));
 +				if (usedialog)
 +					dialog_mesgbox(title, prompt, 8, 72);
 +				else
 +					fprintf(stderr, "%s\n", prompt);
 +
 +				return (DITEM_FAILURE | DITEM_RECREATE);
 +			}
 +			return (DITEM_LEAVE_MENU);
 +		}
 +		
  		if (copymode) {
  			fd1 = open(zoneinfo_file, O_RDONLY, 0);
  			if (fd1 < 0) {
 @@ -656,7 +690,7 @@ confirm_zone(const char *filename)
  	struct tm	*tm;
  	int		rv;
  	
 -	setenv("TZ", filename, 1);
 +	setenv("TZ", filename == NULL ? "" : filename, 1);
  	tzset();
  	tm = localtime(&t);
  
 _______________________________________________
 svn-src-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 
>Unformatted:
 P
