mirror of
https://github.com/rfivet/uemacs.git
synced 2024-12-18 07:16:23 -05:00
Improve buffer name generation from UTF-8 filename.
This commit is contained in:
parent
e62af18798
commit
0f6de2f3b4
26
file.c
26
file.c
@ -27,6 +27,7 @@
|
|||||||
#include "lock.h"
|
#include "lock.h"
|
||||||
#include "mlout.h"
|
#include "mlout.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
#include "utf8.h"
|
||||||
#include "window.h"
|
#include "window.h"
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
@ -390,18 +391,23 @@ void makename( bname_t bname, const char *fname)
|
|||||||
while (*cp1 != 0)
|
while (*cp1 != 0)
|
||||||
++cp1;
|
++cp1;
|
||||||
|
|
||||||
#if MSDOS
|
|
||||||
while (cp1 != &fname[0] && cp1[-1] != ':' && cp1[-1] != '\\'
|
|
||||||
&& cp1[-1] != '/')
|
|
||||||
--cp1;
|
|
||||||
#endif
|
|
||||||
#if USG | BSD
|
|
||||||
while (cp1 != &fname[0] && cp1[-1] != '/')
|
while (cp1 != &fname[0] && cp1[-1] != '/')
|
||||||
--cp1;
|
--cp1;
|
||||||
#endif
|
|
||||||
cp2 = &bname[0];
|
cp2 = &bname[0];
|
||||||
while( cp2 != &bname[ sizeof( bname_t) - 1] && *cp1 != 0 && *cp1 != ';')
|
while( *cp1 != 0 && *cp1 != ';') {
|
||||||
*cp2++ = *cp1++;
|
unicode_t c ;
|
||||||
|
int n ;
|
||||||
|
|
||||||
|
n = utf8_to_unicode( cp1, 0, 4, &c) ;
|
||||||
|
if( cp2 + n <= &bname[ sizeof( bname_t) - 2]) /* 1 digit buffer name conflict [0..9] + EOS */
|
||||||
|
while( n--)
|
||||||
|
*cp2++ = *cp1++ ;
|
||||||
|
else
|
||||||
|
break ;
|
||||||
|
}
|
||||||
|
|
||||||
*cp2 = 0;
|
*cp2 = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -435,7 +441,7 @@ void unqname(char *name)
|
|||||||
* Update the remembered file name and clear the
|
* Update the remembered file name and clear the
|
||||||
* buffer changed flag. This handling of file names
|
* buffer changed flag. This handling of file names
|
||||||
* is different from the earlier versions, and
|
* is different from the earlier versions, and
|
||||||
* is more compatable with Gosling EMACS than
|
* is more compatible with Gosling EMACS than
|
||||||
* with ITS EMACS. Bound to "C-X C-W".
|
* with ITS EMACS. Bound to "C-X C-W".
|
||||||
*/
|
*/
|
||||||
int filewrite( int f, int n) {
|
int filewrite( int f, int n) {
|
||||||
|
Loading…
Reference in New Issue
Block a user