summary refs log tree commit diff
path: root/iconv/iconv_prog.c
diff options
context:
space:
mode:
Diffstat (limited to 'iconv/iconv_prog.c')
-rw-r--r--iconv/iconv_prog.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/iconv/iconv_prog.c b/iconv/iconv_prog.c
index 2452a88c5e..5a08a21819 100644
--- a/iconv/iconv_prog.c
+++ b/iconv/iconv_prog.c
@@ -298,6 +298,7 @@ static int
 process_block (iconv_t cd, const char *addr, size_t len, FILE *output)
 {
 #define OUTBUF_SIZE	32768
+  const char *start = addr;
   char outbuf[OUTBUF_SIZE];
   char *outptr;
   size_t outlen;
@@ -332,7 +333,8 @@ conversion stopped due to problem in writing the output"));
 	  switch (errno)
 	    {
 	    case EILSEQ:
-	      error (0, 0, _("illegal input sequence"));
+	      error (0, 0, _("illegal input sequence at position %ld"),
+		     addr - start);
 	      break;
 	    case EINVAL:
 	      error (0, 0, _("\
@@ -448,7 +450,7 @@ insert_print_list (const void *nodep, VISIT value, int level)
   if (value == leaf || value == postorder)
     {
       const struct gconv_alias *s = *(const struct gconv_alias **) nodep;
-      tsearch (s->fromname, &printlist, (__compar_fn_t) strcoll);
+      tsearch (s->fromname, &printlist, (__compar_fn_t) strverscmp);
     }
 }
 
@@ -487,7 +489,7 @@ do_print  (const void *nodep, VISIT value, int level)
 	    }
 	}
       else
-	  not_first = 1;
+	not_first = 1;
 
       fwrite (s, len, 1, stdout);
       column += len;