File extension first commit

This commit is contained in:
cyd01
2020-04-02 23:31:26 +02:00
parent 7ea6e2b7f7
commit 7e1e04d7c6
11 changed files with 162 additions and 40 deletions
+3
View File
@@ -5,6 +5,9 @@ on:
# Sequence of patterns matched against refs/heads
branches:
- master # Push events on master branch
- feat-*
- fix-*
- bugfix*
# Sequence of patterns matched against refs/tags
tags:
- v*
+112 -31
View File
@@ -850,11 +850,11 @@ static bool load_selected_session(
char sessionname[1024] ;
int j;
dlg_listbox_gettext(ctrlSessionList, dlg, i, sessionname, 1024 ) ;
for( j=0; j<ssd->sesslist.nsessions; j++ ){
for( j=0; j<ssd->sesslist.nsessions; j++ ) {
if( !strcmp( ssd->sesslist.sessions[j], sessionname ) ) i = j ;
}
}
if( (get_param("INIFILE")==2/*SAVEMODE_DIR*/) && GetDirectoryBrowseFlag()
&& (sessionname[0]==' ')&&(sessionname[1]=='[')&&(sessionname[strlen(sessionname)-1]==']') ) {
&& (sessionname[0]==' ')&&(sessionname[1]=='[')&&(sessionname[strlen(sessionname)-1]==']') ) { // On gère un sous-répertoire
sessionname[strlen(sessionname)-1]='\0';
strcpy( CurrentFolder, SetSessPath( sessionname+2 ) ) ;
@@ -876,21 +876,42 @@ static bool load_selected_session(
return false;
}
isdef = !strcmp(ssd->sesslist.sessions[i], "Default Settings");
load_settings(ssd->sesslist.sessions[i], conf);
#ifdef MOD_PERSO
if( (get_param("INIFILE")==SAVEMODE_DIR) && GetDirectoryBrowseFlag() ) {
if( (get_param("INIFILE")==SAVEMODE_DIR) && GetDirectoryBrowseFlag() ) { // On charge en mode portable
if( !strcmp(FileExtension,"") ) {
load_settings(ssd->sesslist.sessions[i], conf);
sfree(ssd->savedsession);
ssd->savedsession = dupstr(isdef ? "" : ssd->sesslist.sessions[i]);
} else {
int j;
char sessionname[1024] ;
dlg_listbox_gettext(ctrlSessionList, dlg, i, sessionname, 1024 ) ;
for( j=0; j<ssd->sesslist.nsessions; j++ ) {
if( !strcmp( ssd->sesslist.sessions[j], sessionname ) ) i = j ;
}
strcat(sessionname,FileExtension);
load_settings(sessionname, conf);
sfree(ssd->savedsession);
sessionname[strlen(sessionname)-strlen(FileExtension)]='\0';
ssd->savedsession = dupstr(isdef ? "" : sessionname);
}
conf_set_str(conf,CONF_folder,CurrentFolder) ;
} else {
} else { // On charge depuis le registre ou alors sans browse directory
load_settings(ssd->sesslist.sessions[i], conf);
strcpy( CurrentFolder, "Default" ) ;
if( conf_get_str(conf,CONF_folder) )
if( strlen( conf_get_str(conf,CONF_folder) )>0 ) {
strcpy( CurrentFolder, conf_get_str(conf,CONF_folder) ) ;
StringList_Add( FolderList, conf_get_str(conf,CONF_folder) ) ;
}
}
#endif
sfree(ssd->savedsession);
ssd->savedsession = dupstr(isdef ? "" : ssd->sesslist.sessions[i]);
}
#else
load_settings(ssd->sesslist.sessions[i], conf);
sfree(ssd->savedsession);
ssd->savedsession = dupstr(isdef ? "" : ssd->sesslist.sessions[i]);
#endif
if (maybe_launch)
*maybe_launch = !isdef;
dlg_refresh(NULL, dlg);
@@ -904,6 +925,7 @@ static bool load_selected_session(
int filter_sessionname( const char * pattern, const char * sessionname, const char * folder, const char * savedsession ) {
char buffer[4092] ;
int lenpattern = strlen(pattern) ;
const char * searchpattern = savedsession+lenpattern ;
while( ((searchpattern[0]==' ')||(searchpattern[0]==' '))&&(searchpattern[0]!='\0') ) searchpattern++ ;
if( stristr( savedsession, pattern ) != savedsession ) return 0 ;
@@ -973,33 +995,72 @@ static void sessionsaver_handler(union control *ctrl, dlgparam *dlg,
for (i = 0; i < ssd->sesslist.nsessions; i++) {
char folder[1024] ;
strcpy( folder, "" ) ;
if( (get_param("INIFILE")==SAVEMODE_REG) || ((get_param("INIFILE")==SAVEMODE_DIR) && !GetDirectoryBrowseFlag()) ) {
if( (get_param("INIFILE")==SAVEMODE_REG) || ((get_param("INIFILE")==SAVEMODE_DIR) && !GetDirectoryBrowseFlag()) ) { // Registry mode
GetSessionFolderName( ssd->sesslist.sessions[i], folder ) ;
}
if( GetPuttyFlag() )
}
if( GetPuttyFlag() ) { // In PuTTY mode => all sessions
dlg_listbox_add(ctrl, dlg, ssd->sesslist.sessions[i]);
else if( (get_param("INIFILE")==SAVEMODE_DIR) && GetDirectoryBrowseFlag() ) {
}
else if( (get_param("INIFILE")==SAVEMODE_DIR) && GetDirectoryBrowseFlag() ) { // In portable mode
CleanFolderName( folder ) ;
if (!strcmp( ssd->savedsession, "" )) {
if( !strcmp( ssd->savedsession, "" ) ) { // If nothing in session name field
if( (!strcmp(CurrentFolder,folder))
|| (!strcmp("",folder))
|| ( strstr(ssd->sesslist.sessions[i]," [")==ssd->sesslist.sessions[i] )
)
dlg_listbox_add(ctrl, dlg, ssd->sesslist.sessions[i]);
}
else {
if( (!strcmp(CurrentFolder,folder))||(!strcmp("",folder)) ) {
if( !GetSessionFilterFlag() ) // filtre desactive
) {
if ( !strcmp(ssd->sesslist.sessions[i]," [..]") ) {
dlg_listbox_add(ctrl, dlg, ssd->sesslist.sessions[i]);
else if( (stristr(ssd->sesslist.sessions[i],ssd->savedsession)!=NULL)
|| ( strstr(ssd->sesslist.sessions[i]," [")==ssd->sesslist.sessions[i] ) )
} else if( !strcmp(FileExtension,"") // No file extension defined
&& !(strstr(ssd->sesslist.sessions[i]," [.")==ssd->sesslist.sessions[i])
) {
dlg_listbox_add(ctrl, dlg, ssd->sesslist.sessions[i]);
} else if( strcmp(FileExtension,"") // if file extention defined
&& (
!strcmp(FileExtension,ssd->sesslist.sessions[i]+strlen(ssd->sesslist.sessions[i])-strlen(FileExtension))
||( (strstr(ssd->sesslist.sessions[i]," [")==ssd->sesslist.sessions[i]) && !(strstr(ssd->sesslist.sessions[i]," [.")==ssd->sesslist.sessions[i]) )
)
) {
char *n=(char*)malloc(strlen(ssd->sesslist.sessions[i])+1);
strcpy(n,ssd->sesslist.sessions[i]);
if( (n[0]!=' ') || (n[1]!='[') )
n[strlen(n)-strlen(FileExtension)]='\0'; // On essaie de supprimer l'affichage de l'extention
dlg_listbox_add(ctrl, dlg, n);
free(n);
}
}
} else { // If something in session name field
if( (!strcmp(CurrentFolder,folder))||(!strcmp("",folder)) ) {
if( !GetSessionFilterFlag() ) // No filter
dlg_listbox_add(ctrl, dlg, ssd->sesslist.sessions[i]);
else if( (stristr(ssd->sesslist.sessions[i],ssd->savedsession)!=NULL)
|| ( strstr(ssd->sesslist.sessions[i]," [")==ssd->sesslist.sessions[i] ) ) {
if ( !strcmp(ssd->sesslist.sessions[i]," [..]") ) {
dlg_listbox_add(ctrl, dlg, ssd->sesslist.sessions[i]);
} else if( !strcmp(FileExtension,"") // No file extension defined
&& !(strstr(ssd->sesslist.sessions[i]," [.")==ssd->sesslist.sessions[i])
) {
dlg_listbox_add(ctrl, dlg, ssd->sesslist.sessions[i]);
} else if( strcmp(FileExtension,"") // if file extention defined
&& (
!strcmp(FileExtension,ssd->sesslist.sessions[i]+strlen(ssd->sesslist.sessions[i])-strlen(FileExtension))
||( (strstr(ssd->sesslist.sessions[i]," [")==ssd->sesslist.sessions[i]) && !(strstr(ssd->sesslist.sessions[i]," [.")==ssd->sesslist.sessions[i]) )
)
) {
char *n=(char*)malloc(strlen(ssd->sesslist.sessions[i])+1);
strcpy(n,ssd->sesslist.sessions[i]);
if( (n[0]!=' ') || (n[1]!='[') )
n[strlen(n)-strlen(FileExtension)]='\0'; // On essaie de supprimer l'affichage de l'extention
dlg_listbox_add(ctrl, dlg, n);
free(n);
}
}
}
}
else if( !GetSessionFilterFlag() ) // filtre desactive
}
else if( !GetSessionFilterFlag() ) // In registry mode without filter => all sessions
dlg_listbox_add(ctrl, dlg, ssd->sesslist.sessions[i]);
else {
else { // In registry mode with filter
if( (!strcmp(CurrentFolder, "Default" )&&GetSessionsInDefaultFlag())
|| (!strcmp(CurrentFolder,folder)) ) {
if( (!strcmp( ssd->savedsession, "" ))
@@ -1106,7 +1167,11 @@ static void sessionsaver_handler(union control *ctrl, dlgparam *dlg,
conf_set_str( conf, CONF_password, buffer ) ;
memset( buffer, 0, strlen(buffer) ) ;
}
char *errmsg = save_settings(ssd->savedsession, conf);
char sessionname[1024];
strcpy(sessionname,ssd->savedsession);
if( strcmp(FileExtension,"") ) { strcat(sessionname,FileExtension); }
char *errmsg = save_settings(sessionname, conf);
if( conf_get_int(conf, CONF_protocol) != PROT_SERIAL ) {
char buffer[1024] ;
strcpy( buffer, conf_get_str( conf, CONF_password) ) ;
@@ -1133,19 +1198,26 @@ static void sessionsaver_handler(union control *ctrl, dlgparam *dlg,
ssd->delbutton && ctrl == ssd->delbutton) {
int i = dlg_listbox_index(ssd->listbox, dlg);
#ifdef MOD_PERSO
{ // Pour recuperer le bon index de la session a supprimer quand il y le filtre des sessions
// Pour recuperer le bon index de la session a supprimer quand il y le filtre des sessions
char sessionname[1024] ;
int j;
dlg_listbox_gettext(ctrlSessionList, dlg, i, sessionname, 1024 ) ;
for( j=0; j<ssd->sesslist.nsessions; j++ ){
if( !strcmp( ssd->sesslist.sessions[j], sessionname ) ) i = j ;
}
}
#endif
if (i <= 0) {
dlg_beep(dlg);
} else {
if( strcmp(FileExtension,"") ) { strcat(sessionname,FileExtension) ; }
del_settings(sessionname);
#else
if (i <= 0) {
dlg_beep(dlg);
} else {
del_settings(ssd->sesslist.sessions[i]);
#endif
get_sesslist(&ssd->sesslist, false);
get_sesslist(&ssd->sesslist, true);
dlg_refresh(ssd->listbox, dlg);
@@ -1211,10 +1283,13 @@ static void sessionsaver_handler(union control *ctrl, dlgparam *dlg,
#ifdef MOD_PERSO
#if (defined MOD_PERSO) && (!defined FDJ) && (defined MOD_STARTBUTTON)
else if (ctrl == ssd->startbutton) {
char sessionname[1024];
if( conf_launchable(conf) ) {
RunConfig(conf) ;
} else if( (strlen(ssd->savedsession)>0) && isSessionExist(ssd,ssd->savedsession) ) {
if( !RunSession( hwnd, CurrentFolder, ssd->savedsession ) ) { dlg_beep(dlg) ; }
strcpy( sessionname, ssd->savedsession ) ;
if( strcmp(FileExtension,"") ) { strcat(sessionname,FileExtension); }
if( !RunSession( hwnd, CurrentFolder, sessionname ) ) { dlg_beep(dlg) ; }
} else if( dlg_last_focused(ctrl, dlg) == ssd->listbox ) {
Conf *conf2 = conf_new() ;
bool mbl = false;
@@ -1228,8 +1303,11 @@ static void sessionsaver_handler(union control *ctrl, dlgparam *dlg,
} else
dlg_beep(dlg);
if (conf_launchable(conf)) { RunSession( hwnd, CurrentFolder, ssd->savedsession ) ; }
strcpy(ssd->savedsession,oldsavedsession); free(oldsavedsession);
strcpy( sessionname, ssd->savedsession ) ;
if( strcmp(FileExtension,"") ) { strcat(sessionname,FileExtension); }
if (conf_launchable(conf)) { RunSession( hwnd, CurrentFolder, sessionname ) ; }
strcpy(ssd->savedsession,oldsavedsession);
free(oldsavedsession);
conf_free(conf2);
} else { dlg_beep(dlg) ;
}
@@ -1240,7 +1318,10 @@ static void sessionsaver_handler(union control *ctrl, dlgparam *dlg,
ssd->clearbutton && ctrl == ssd->clearbutton) {
SetInitCurrentFolder( "Default" );
folder_handler( ctrlFolderList, dlg, data, EVENT_REFRESH ) ;
do_defaults("Default Settings", conf) ;
char sessionname[1024];
strcpy(sessionname,"Default Settings");
if( strcmp(FileExtension,"") ) { strcat(sessionname,FileExtension); }
do_defaults(sessionname, conf) ;
conf_set_str(conf,CONF_host,"");
dlg_editbox_set(ctrlHostnameEdit, dlg,"");
if( strlen(ssd->savedsession) > 0 ) {
+2
View File
@@ -157,7 +157,9 @@ void ldisc_send(Ldisc *ldisc, const void *vbuf, int len, bool interactive)
int keyflag = 0;
assert(ldisc->term);
#ifndef MOD_PERSO
assert(len);
#endif
/* rutty: */
#ifdef MOD_RUTTY
+8 -1
View File
@@ -1008,7 +1008,14 @@ bool do_config(void)
if( GetDefaultSettingsFlag() ) {
char buffer[1024] ;
GetSessionFolderName( "Default Settings", buffer ) ;
if( strlen( buffer ) == 0 ) { save_settings( "Default Settings", conf ) ; }
if( strlen( buffer ) == 0 ) {
if( !strcmp(FileExtension,"") ) {
save_settings( "Default Settings", conf ) ;
} else {
sprintf(buffer,"Default Settings%s", FileExtension);
save_settings( buffer, conf ) ;
}
}
}
#endif
ctrlbox = ctrl_new_box();
+1 -1
View File
@@ -661,7 +661,7 @@ static void close_session(void *ignored_context)
void RestartSession( void ) {
win_seat_connection_fatal( win_seat, "User request session restart..." ) ;
PostMessage(hwnd,WM_KEYDOWN,VK_RETURN ,0) ;
is_backend_first_connected = 0 ;
//is_backend_first_connected = 0 ;
PostMessage(hwnd,WM_KEYUP,VK_RETURN ,1) ;
}
#endif
+19 -2
View File
@@ -350,7 +350,10 @@ char PSCPOptions[1024] = "-scp -r" ;
char * PlinkPath = NULL ;
// Repertoire de lancement
char InitialDirectory[4096]="" ;
char InitialDirectory[4096]="" ;
// Extention pour les fichiers de session en mode portable (peut être ktx)
char FileExtension[15] = "" ;
// Chemin complet des fichiers de configuration kitty.ini et kitty.sav
static char * KittyIniFile = NULL ;
@@ -3478,7 +3481,14 @@ int ShowPortfwd( HWND hwnd, Conf * conf ) {
void SaveCurrentSetting( HWND hwnd ) {
char filename[4096], buffer[4096] ;
strcpy( buffer, "Connection files (*.ktx)|*.ktx|All files (*.*)|*.*|" ) ;
if( strlen(FileExtension)>0 ) {
strcpy( buffer, "Connection files (*" ) ;
strcat( buffer, FileExtension ) ; strcat( buffer, ")|*" ) ;
strcat( buffer, FileExtension ) ; strcat( buffer, "|" ) ;
} else {
strcpy( buffer, "Connection files (*.ktx)|*.ktx|" ) ;
}
strcat( buffer, "All files (*.*)|*.*|" ) ;
if( buffer[strlen(buffer)-1]!='|' ) strcat( buffer, "|" ) ;
if( SaveFileName( hwnd, filename, "Save file...", buffer ) ) {
save_open_settings_forced( filename, conf ) ;
@@ -5101,6 +5111,13 @@ void LoadParameters( void ) {
internal_delay = atoi( buffer ) ;
if( internal_delay < 1 ) internal_delay = 1 ;
}
if( ReadParameter( INIT_SECTION, "fileextension", buffer ) ) {
if( strlen(buffer) > 0 ) {
if( buffer[0] != '.' ) { strcpy( FileExtension, "." ) ; } else { strcpy( FileExtension, "" ) ; }
strcat( FileExtension, buffer ) ;
while( FileExtension[strlen(FileExtension)-1]==' ' ) { FileExtension[strlen(FileExtension)-1] = '\0' ; }
}
}
if( ReadParameter( INIT_SECTION, "KiPP", buffer ) != 0 ) {
if( decryptstring( buffer, MASTER_PASSWORD ) ) ManagePassPhrase( buffer ) ;
}
+3
View File
@@ -220,6 +220,9 @@ extern char PSCPOptions[] ;
// Repertoire de lancement
extern char InitialDirectory[4096] ;
// Extention pour les fichiers de session en mode portable (peut être ktx)
extern char FileExtension[15] ;
// Répertoire de sauvegarde de la configuration (savemode=dir)
extern char * ConfigDirectory ;
+3
View File
@@ -86,6 +86,9 @@ cygterm=no
; downloaddir: this is the local directory where files are downloaded with the pscp integration
;downloaddir=
; fileextension: the extension for session settings files in portable mode
;fileextension=
; hyperlink: enable/disable the hyperlink feature
hyperlink=yes
+6 -4
View File
@@ -605,6 +605,8 @@ void CreateSSHHandler() {
// Creation de l'association de fichiers *.ktx
void CreateFileAssoc() {
char path[1024], buffer[1024] ;
char ext[15] ;
if( strlen( FileExtension ) > 0 ) { strcpy( ext, FileExtension ) ; } else { strcpy( ext, ".ktx") ; }
GetModuleFileName( NULL, (LPTSTR)path, 1024 ) ;
@@ -618,10 +620,10 @@ void CreateFileAssoc() {
sprintf(buffer, "\"%s\" -kload \"%%1\"", path ) ;
RegTestOrCreate( HKEY_CLASSES_ROOT, "kitty.connect.1\\shell\\open\\command", "", buffer) ;
// Création de l'association de fichiers
RegTestOrCreate( HKEY_CLASSES_ROOT, ".ktx", "", "kitty.connect.1") ;
RegTestOrCreate( HKEY_CLASSES_ROOT, ".ktx", "PerceivedType", "Connection") ;
RegTestOrCreate( HKEY_CLASSES_ROOT, ".ktx", "Content Type", "connection/ssh") ;
RegTestOrCreate( HKEY_CLASSES_ROOT, ".ktx", "OpenWithProgids", "kitty.connect.1") ;
RegTestOrCreate( HKEY_CLASSES_ROOT, ext, "", "kitty.connect.1") ;
RegTestOrCreate( HKEY_CLASSES_ROOT, ext, "PerceivedType", "Connection") ;
RegTestOrCreate( HKEY_CLASSES_ROOT, ext, "Content Type", "connection/ssh") ;
RegTestOrCreate( HKEY_CLASSES_ROOT, ext, "OpenWithProgids", "kitty.connect.1") ;
}
// Check for KiTTY registry key. If not, copy from PuTTY one
+4
View File
@@ -12,8 +12,12 @@
#define MAX_VALUE_NAME 16383
#endif
char * GetValueData(HKEY hkTopKey, char * lpSubKey, const char * lpValueName, char * rValue) ;
// Extention pour les fichiers de session en mode portable (peut être ktx)
extern char FileExtension[15] ;
// Teste l'existance d'une clé
int RegTestKey( HKEY hMainKey, LPCTSTR lpSubKey ) ;
+1 -1
View File
@@ -638,7 +638,7 @@ void SaveDumpConfig( FILE *fp, Conf * conf ) {
,SessionFilterFlag,SessionsInDefaultFlag,DefaultSettingsFlag,ImageViewerFlag,ImageSlideDelay,MaxBlinkingTime,PrintCharSize,PrintMaxLinePerPage,PrintMaxCharPerLine,GetReadOnlyFlag(),GetScrumbleKeyFlag());
fprintf( fp, "AntiIdleCount=%d\nAntiIdleCountMax=%d\nIconeNum=%d\n"
,AntiIdleCount,AntiIdleCountMax,IconeNum);
fprintf( fp, "AntiIdleStr=%s\nInitialDirectory=%s\nConfigDirectory=%s\nBuildVersionTime=%s\n",AntiIdleStr,InitialDirectory,ConfigDirectory,BuildVersionTime);
fprintf( fp, "AntiIdleStr=%s\nInitialDirectory=%s\nFileExtension=%s\nConfigDirectory=%s\nBuildVersionTime=%s\n",AntiIdleStr,InitialDirectory,FileExtension,ConfigDirectory,BuildVersionTime);
if( WinSCPPath!= NULL ) fprintf( fp, "WinSCPPath=%s\n", WinSCPPath ) ;
if( PSCPPath!= NULL ) fprintf( fp, "PSCPPath=%s\n", PSCPPath ) ;
if( PlinkPath!= NULL ) fprintf( fp, "PlinkPath=%s\n", PlinkPath ) ;