enable filename input
authorborg323 <4010067-borg323@users.noreply.gitlab.com>
Tue, 21 May 2019 15:51:36 +0000 (18:51 +0300)
committerDavid Griffith <dave@661.org>
Mon, 27 May 2019 02:32:11 +0000 (19:32 -0700)
src/curses/ux_input.c

index cc8c5ec03d8f4fab5191ed1485ffa29bbcc3c052..f7dec8f47b0a9050db37142dc50b97458ceb951e 100644 (file)
@@ -878,8 +878,35 @@ char *os_read_file_name (const char *default_name, int flag)
        } else
           print_string (default_name);
        print_string ("\": ");
-print_string ("\n");
-//     read_string (FILENAME_MAX, (zchar *)file_name);
+#ifdef USE_UTF8
+       {
+           zchar z_name[FILENAME_MAX + 1];
+           zchar *zp;
+           read_string (FILENAME_MAX, z_name);
+           i = 0;
+           zp = z_name;
+           while (*zp)
+           {
+               if(*zp <= 0x7f) {
+                   if (i > FILENAME_MAX) break;
+                   file_name[i++] = *zp;
+               } else if(*zp > 0x7ff) {
+                   if (i > FILENAME_MAX - 2) break;
+                   file_name[i++] = 0xe0 | ((*zp >> 12) & 0xf);
+                   file_name[i++] = 0x80 | ((*zp >> 6) & 0x3f);
+                   file_name[i++] = 0x80 | (*zp & 0x3f);
+               } else {
+                   if (i > FILENAME_MAX - 1) break;
+                   file_name[i++] = 0xc0 | ((*zp >> 6) & 0x1f);
+                   file_name[i++] = 0x80 | (*zp & 0x3f);
+               }
+               zp++;
+           }
+           file_name[i] = 0;
+       }
+#else
+       read_string (FILENAME_MAX, file_name);
+#endif
     }
 
     /* Return failure if path provided when in restricted mode.