localedef --add-to-archive uses a hard-coded locale path which doesn't exist in
normal use, and there's no way to pass an alternative filename.

Add a fallback of $LOCALEARCHIVE from the environment, and allow creation of new locale archives that are not the system archive.

Upstream-Status: Inappropriate (OE-specific)
Signed-off-by: Ross Burton <ross.burton@intel.com>

diff --git a/locale/programs/locarchive.c b/locale/programs/locarchive.c
index ca332a34..6b7ba9b2 100644
--- a/locale/programs/locarchive.c
+++ b/locale/programs/locarchive.c
@@ -569,10 +569,13 @@ open_archive (struct locarhandle *ah, bool readonly)
   /* If ah has a non-NULL fname open that otherwise open the default.  */
   if (archivefname == NULL)
     {
-      archivefname = default_fname;
-      if (output_prefix)
-        memcpy (default_fname, output_prefix, prefix_len);
-      strcpy (default_fname + prefix_len, ARCHIVE_NAME);
+      archivefname = getenv("LOCALEARCHIVE");
+      if (archivefname == NULL) {
+              archivefname = default_fname;
+              if (output_prefix)
+                memcpy (default_fname, output_prefix, prefix_len);
+              strcpy (default_fname + prefix_len, ARCHIVE_NAME);
+      }
     }
 
   while (1)
@@ -585,7 +588,7 @@ open_archive (struct locarhandle *ah, bool readonly)
 	     the default locale archive we ignore the failure and
 	     list an empty archive, otherwise we print an error
 	     and exit.  */
-	  if (errno == ENOENT && archivefname == default_fname)
+	  if (errno == ENOENT)
 	    {
 	      if (readonly)
 		{
