Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 9 Mar 2017 19:02:36 +0000 (UTC)
From:      "Pedro F. Giffuni" <pfg@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r314972 - head/usr.bin/localedef
Message-ID:  <201703091902.v29J2aRH005143@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: pfg
Date: Thu Mar  9 19:02:36 2017
New Revision: 314972
URL: https://svnweb.freebsd.org/changeset/base/314972

Log:
  Revert r314969, r314961:
  
  The localdef(1) changes are breaking world:
  
  00:18:40.750 /usr/src/share/colldef/af_ZA.UTF-8.src: 2421: error: Bad file
  descriptor
  
  I will fix them offline.
  
  Reported by:	lwshu and many others

Modified:
  head/usr.bin/localedef/collate.c
  head/usr.bin/localedef/ctype.c
  head/usr.bin/localedef/localedef.c
  head/usr.bin/localedef/localedef.h
  head/usr.bin/localedef/time.c

Modified: head/usr.bin/localedef/collate.c
==============================================================================
--- head/usr.bin/localedef/collate.c	Thu Mar  9 18:37:17 2017	(r314971)
+++ head/usr.bin/localedef/collate.c	Thu Mar  9 19:02:36 2017	(r314972)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017 Nexenta Systems, Inc.
+ * Copyright 2010 Nexenta Systems, Inc.  All rights reserved.
  * Copyright 2015 John Marino <draco@marino.st>
  *
  * This source code is derived from the illumos localedef command, and
@@ -1291,25 +1291,21 @@ dump_collate(void)
 	if ((wr_category(vers, COLLATE_STR_LEN, f) < 0) ||
 	    (wr_category(&collinfo, sizeof (collinfo), f) < 0) ||
 	    (wr_category(&chars, sizeof (chars), f) < 0)) {
-	    	delete_category(f);
 		return;
 	}
 
 	for (i = 0; i < NUM_WT; i++) {
 		sz =  sizeof (collate_subst_t) * collinfo.subst_count[i];
 		if (wr_category(subst[i], sz, f) < 0) {
-			delete_category(f);
 			return;
 		}
 	}
 	sz = sizeof (collate_chain_t) * collinfo.chain_count;
 	if (wr_category(chain, sz, f) < 0) {
-		delete_category(f);
 		return;
 	}
 	sz = sizeof (collate_large_t) * collinfo.large_count;
 	if (wr_category(large, sz, f) < 0) {
-		delete_category(f);
 		return;
 	}
 

Modified: head/usr.bin/localedef/ctype.c
==============================================================================
--- head/usr.bin/localedef/ctype.c	Thu Mar  9 18:37:17 2017	(r314971)
+++ head/usr.bin/localedef/ctype.c	Thu Mar  9 19:02:36 2017	(r314972)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017 Nexenta Systems, Inc.
+ * Copyright 2011 Nexenta Systems, Inc.  All rights reserved.
  * Copyright 2012 Garrett D'Amore <garrett@damore.org>  All rights reserved.
  * Copyright 2015 John Marino <draco@marino.st>
  *
@@ -306,7 +306,7 @@ dump_ctype(void)
 		return;
 
 	(void) memcpy(rl.magic, _FILE_RUNE_MAGIC_1, 8);
-	(void) strlcpy(rl.encoding, get_wide_encoding(), sizeof (rl.encoding));
+	(void) strncpy(rl.encoding, get_wide_encoding(), sizeof (rl.encoding));
 
 	/*
 	 * Initialize the identity map.
@@ -379,12 +379,12 @@ dump_ctype(void)
 		if ((ctn->ctype & _ISALPHA) &&
 		    (ctn->ctype & (_ISPUNCT|_ISDIGIT)))
 			conflict++;
-		if ((ctn->ctype & _ISPUNCT) &&
+		if ((ctn->ctype & _ISPUNCT) &
 		    (ctn->ctype & (_ISDIGIT|_ISALPHA|_ISXDIGIT)))
 			conflict++;
 		if ((ctn->ctype & _ISSPACE) && (ctn->ctype & _ISGRAPH))
 			conflict++;
-		if ((ctn->ctype & _ISCNTRL) && (ctn->ctype & _ISPRINT))
+		if ((ctn->ctype & _ISCNTRL) & _ISPRINT)
 			conflict++;
 		if ((wc == ' ') && (ctn->ctype & (_ISPUNCT|_ISGRAPH)))
 			conflict++;
@@ -412,10 +412,8 @@ dump_ctype(void)
 			ct[rl.runetype_ext_nranges-1].max = wc;
 		} else {
 			rl.runetype_ext_nranges++;
-			ct = realloc(ct, rl.runetype_ext_nranges *
-			    sizeof (*ct));
-			if (ct == NULL)
-			    goto fail;
+			ct = realloc(ct,
+			    sizeof (*ct) * rl.runetype_ext_nranges);
 			ct[rl.runetype_ext_nranges - 1].min = wc;
 			ct[rl.runetype_ext_nranges - 1].max = wc;
 			ct[rl.runetype_ext_nranges - 1].map = ctn->ctype;
@@ -429,10 +427,8 @@ dump_ctype(void)
 			last_lo = ctn;
 		} else {
 			rl.maplower_ext_nranges++;
-			lo = realloc(lo, rl.maplower_ext_nranges *
-			    sizeof (*lo));
-			if (lo == NULL)
-			    goto fail;
+			lo = realloc(lo,
+			    sizeof (*lo) * rl.maplower_ext_nranges);
 			lo[rl.maplower_ext_nranges - 1].min = wc;
 			lo[rl.maplower_ext_nranges - 1].max = wc;
 			lo[rl.maplower_ext_nranges - 1].map = ctn->tolower;
@@ -447,10 +443,8 @@ dump_ctype(void)
 			last_up = ctn;
 		} else {
 			rl.mapupper_ext_nranges++;
-			up = realloc(up, rl.mapupper_ext_nranges *
-			    sizeof (*up));
-			if (up == NULL)
-			    goto fail;
+			up = realloc(up,
+			    sizeof (*up) * rl.mapupper_ext_nranges);
 			up[rl.mapupper_ext_nranges - 1].min = wc;
 			up[rl.mapupper_ext_nranges - 1].max = wc;
 			up[rl.mapupper_ext_nranges - 1].map = ctn->toupper;
@@ -458,17 +452,12 @@ dump_ctype(void)
 		}
 	}
 
-	if ((wr_category(&rl, sizeof (rl), f) == 0) &&
-	    (wr_category(ct, sizeof (*ct) * rl.runetype_ext_nranges, f) == 0) &&
-	    (wr_category(lo, sizeof (*lo) * rl.maplower_ext_nranges, f) == 0) &&
-	    (wr_category(up, sizeof (*up) * rl.mapupper_ext_nranges, f) == 0)) {
-		close_category(f);
-		goto out;
+	if ((wr_category(&rl, sizeof (rl), f) < 0) ||
+	    (wr_category(ct, sizeof (*ct) * rl.runetype_ext_nranges, f) < 0) ||
+	    (wr_category(lo, sizeof (*lo) * rl.maplower_ext_nranges, f) < 0) ||
+	    (wr_category(up, sizeof (*up) * rl.mapupper_ext_nranges, f) < 0)) {
+		return;
 	}
 
-fail:
-	delete_category(f);
-out:
-	free(ct);
-	free(lo);
-	free(up);}
+	close_category(f);
+}

Modified: head/usr.bin/localedef/localedef.c
==============================================================================
--- head/usr.bin/localedef/localedef.c	Thu Mar  9 18:37:17 2017	(r314971)
+++ head/usr.bin/localedef/localedef.c	Thu Mar  9 19:02:36 2017	(r314972)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017 Nexenta Systems, Inc.
+ * Copyright 2010 Nexenta Systems, Inc.  All rights reserved.
  * Copyright 2015 John Marino <draco@marino.st>
  *
  * This source code is derived from the illumos localedef command, and
@@ -126,19 +126,12 @@ open_category(void)
 }
 
 void
-delete_category(FILE *f)
-{
-	(void) fclose(f);
-	(void) unlink(category_file());
-}
-
-void
 close_category(FILE *f)
 {
-	if (fchmod(fileno(f), 0644) < 0 ||
-	    fclose(f) != 0) {
+	if (fchmod(fileno(f), 0644) < 0) {
+		(void) fclose(f);
+		(void) unlink(category_file());
 		errf(strerror(errno));
-		delete_category(f);
 	}
 	if (fclose(f) < 0) {
 		(void) unlink(category_file());
@@ -200,13 +193,15 @@ int
 putl_category(const char *s, FILE *f)
 {
 	if (s && fputs(s, f) == EOF) {
+		(void) fclose(f);
+		(void) unlink(category_file());
 		errf(strerror(errno));
-		delete_category(f);
 		return (EOF);
 	}
 	if (fputc('\n', f) == EOF) {
+		(void) fclose(f);
+		(void) unlink(category_file());
 		errf(strerror(errno));
-		delete_category(f);
 		return (EOF);
 	}
 	return (0);
@@ -219,8 +214,9 @@ wr_category(void *buf, size_t sz, FILE *
 		return (0);
 	}
 	if (fwrite(buf, sz, 1, f) < 1) {
+		(void) fclose(f);
+		(void) unlink(category_file());
 		errf(strerror(errno));
-		delete_category(f);
 		return (EOF);
 	}
 	return (0);

Modified: head/usr.bin/localedef/localedef.h
==============================================================================
--- head/usr.bin/localedef/localedef.h	Thu Mar  9 18:37:17 2017	(r314971)
+++ head/usr.bin/localedef/localedef.h	Thu Mar  9 19:02:36 2017	(r314972)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017 Nexenta Systems, Inc.
+ * Copyright 2010 Nexenta Systems, Inc.  All rights reserved.
  * Copyright 2015 John Marino <draco@marino.st>
  *
  * This source code is derived from the illumos localedef command, and
@@ -60,7 +60,6 @@ void warn(const char *, ...);
 int putl_category(const char *, FILE *);
 int wr_category(void *, size_t, FILE *);
 FILE *open_category(void);
-void delete_category(FILE *);
 void close_category(FILE *);
 void copy_category(char *);
 const char *category_name(void);

Modified: head/usr.bin/localedef/time.c
==============================================================================
--- head/usr.bin/localedef/time.c	Thu Mar  9 18:37:17 2017	(r314971)
+++ head/usr.bin/localedef/time.c	Thu Mar  9 19:02:36 2017	(r314972)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017 Nexenta Systems, Inc.
+ * Copyright 2010 Nexenta Systems, Inc.  All rights reserved.
  * Copyright 2015 John Marino <draco@marino.st>
  *
  * This source code is derived from the illumos localedef command, and
@@ -78,7 +78,7 @@ add_time_str(wchar_t *wcs)
 		break;
 	case T_DATE_FMT:
 		/*
-		 * This one is a Solaris extension. Too bad date just
+		 * This one is a Solaris extension, Too bad date just
 		 * doesn't use %c, which would be simpler.
 		 */
 		tm.date_fmt = str;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201703091902.v29J2aRH005143>