Improve Print_current_directory()
This commit is contained in:
parent
9886872c8a
commit
6e83791dde
@ -1248,32 +1248,15 @@ static void Display_bookmark(T_Dropdown_button * Button, int bookmark_number)
|
||||
|
||||
//------------------------ Chargements et sauvegardes ------------------------
|
||||
|
||||
void Print_current_directory(void)
|
||||
//
|
||||
// Shows Selector->Directory on 37 chars
|
||||
//
|
||||
/// Shows Selector->Directory on 37 chars
|
||||
static void Print_current_directory(void)
|
||||
{
|
||||
char converted_name[MAX_PATH_CHARACTERS];
|
||||
int length; // length du répertoire courant
|
||||
int index; // index de parcours de la chaine complète
|
||||
|
||||
strncpy(converted_name,Selector->Directory,sizeof(converted_name));
|
||||
converted_name[sizeof(converted_name)-1] = '\0';
|
||||
#ifdef ENABLE_FILENAMES_ICONV
|
||||
{
|
||||
/* convert file name from UTF8 to ANSI */
|
||||
char * input = Selector->Directory;
|
||||
size_t inbytesleft = strlen(input);
|
||||
char * output = converted_name;
|
||||
size_t outbytesleft = sizeof(converted_name)-1;
|
||||
if(cd != (iconv_t)-1 && (ssize_t)iconv(cd, &input, &inbytesleft, &output, &outbytesleft) >= 0)
|
||||
*output = '\0';
|
||||
}
|
||||
#endif /* ENABLE_FILENAMES_ICONV */
|
||||
size_t length; // length du répertoire courant
|
||||
size_t index; // index de parcours de la chaine complète
|
||||
|
||||
Window_rectangle(10,84,37*8,8,MC_Light);
|
||||
|
||||
if (Selector->Directory_unicode[0] != 0)
|
||||
if (Selector->Directory_unicode != NULL && Selector->Directory_unicode[0] != 0)
|
||||
{
|
||||
length=Unicode_strlen(Selector->Directory_unicode);
|
||||
if (length>MAX_DISPLAYABLE_PATH)
|
||||
@ -1301,7 +1284,24 @@ void Print_current_directory(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
length=strlen(converted_name);
|
||||
char * converted_name;
|
||||
#ifdef ENABLE_FILENAMES_ICONV
|
||||
/* convert file name from UTF8 to ANSI */
|
||||
char * input = Selector->Directory;
|
||||
size_t inbytesleft = strlen(input);
|
||||
char * output;
|
||||
size_t outbytesleft = inbytesleft + 1;
|
||||
converted_name = malloc(outbytesleft);
|
||||
output = converted_name;
|
||||
if(cd != (iconv_t)-1 && (ssize_t)iconv(cd, &input, &inbytesleft, &output, &outbytesleft) >= 0)
|
||||
*output = '\0';
|
||||
else
|
||||
strcpy(converted_name, Selector->Directory);
|
||||
#else
|
||||
converted_name = strdup(Selector->Directory);
|
||||
#endif /* ENABLE_FILENAMES_ICONV */
|
||||
|
||||
length = strlen(converted_name);
|
||||
if (length>MAX_DISPLAYABLE_PATH)
|
||||
{ // We need to truncate the directory
|
||||
char temp_name[MAX_DISPLAYABLE_PATH+1]; // truncated name
|
||||
@ -1318,7 +1318,7 @@ void Print_current_directory(void)
|
||||
(length-index<=MAX_DISPLAYABLE_PATH-4) )
|
||||
{
|
||||
// we found the place !
|
||||
strcpy(temp_name+4,converted_name+index);
|
||||
memcpy(temp_name + 4, converted_name + index, length - index + 1);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -1327,8 +1327,9 @@ void Print_current_directory(void)
|
||||
}
|
||||
else // The string is short enough
|
||||
Print_in_window(10,84,converted_name,MC_Black,MC_Light);
|
||||
free(converted_name);
|
||||
}
|
||||
|
||||
|
||||
Update_window_area(10,84,37*8,8);
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user