Parsing /etc/TIMEZONE

Dennis L. Mumaugh seismo!cuuxb!dlm
Mon Dec 15 15:56:21 UTC 1986


I wrote a simpler and better parse of /etc/TIMEZONE.  Also note that
since /etc/init already does so one could steal its code.  He is my short
parse.  Note, it does parse System V Release 3.1 versions which
have OTHER lines of garbage (comments and such):
===
#include <stdio.h>
#include <string.h>
char	def_timezone[] = "GMT0";
char	*
gettz()
{
	FILE * tzfp;
	register char	*bp;
	register char	*tbp;
	static   char	buf[132];

	if ( (tzfp = fopen("/etc/TIMEZONE", "r") ) == NULL) {
		return(def_timezone);
	}
	while ( fgets(buf, sizeof buf, tzfp) != NULL ) {
		if ( buf[0] == '#' || buf[0] == '\n' )
			continue;
		buf[strlen(buf)-1] = '\0'; /* strip newline */
		if ( strchr(buf, '=') == NULL )
			continue;
		for (tbp = buf; ; ) {
			bp = strtok(tbp, "; \t");
			if ( bp == NULL )
				break;
			/*  should be xx=xxx; */
			if ( strchr(bp, '=') != NULL 
			  && strncmp( bp, "TZ=",3) == 0 )
				break;
			tbp = NULL;
		}
		fclose(tzfp);
		return(strchr(bp,'=')+1);
	}
	fclose(tzfp);
	return(def_timezone);
}
=====
Note that we use the stdio AND SysV string functions.

--
=Dennis L. Mumaugh
 Lisle, IL       ...!{ihnp4,cbosgd,lll-crg}!cuuxb!dlm



More information about the tz mailing list