Partial patch to allow loading spare page from command line.

It's not working yet but does not introduce regressions instead.
Cleaned up version of patch proposed on the issue tracker.


git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@1122 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
Adrien Destugues 2009-10-31 16:42:08 +00:00
parent 036d8008cb
commit fb3404e2ba

62
main.c
View File

@ -173,18 +173,18 @@ void Error_function(int error_code, const char *filename, int line_number, const
}
// --------------------- Analyse de la ligne de commande ---------------------
void Analyze_command_line(int argc,char * argv[])
void Analyze_command_line(int argc, char * argv[])
{
char *buffer ;
int index;
File_in_command_line=0;
Resolution_in_command_line=0;
File_in_command_line = 0;
Resolution_in_command_line = 0;
Current_resolution=Config.Default_resolution;
Current_resolution = Config.Default_resolution;
for (index=1; index<argc; index++)
for (index = 1; index<argc; index++)
{
if ( !strcmp(argv[index],"/?") ||
!strcmp(argv[index],"/h") ||
@ -201,7 +201,7 @@ void Analyze_command_line(int argc,char * argv[])
if (index<argc)
{
Resolution_in_command_line = 1;
Current_resolution=Convert_videomode_arg(argv[index]);
Current_resolution = Convert_videomode_arg(argv[index]);
if (Current_resolution == -1)
{
Error(ERROR_COMMAND_LINE);
@ -278,7 +278,7 @@ void Analyze_command_line(int argc,char * argv[])
index++;
if (index<argc)
{
strcpy(Gui_skin_file,argv[index]);
strcpy(Gui_skin_file, argv[index]);
}
else
{
@ -290,24 +290,31 @@ void Analyze_command_line(int argc,char * argv[])
else
{
// Si ce n'est pas un paramètre, c'est le nom du fichier à ouvrir
if (File_in_command_line)
if (File_in_command_line > 1)
{
// plusieurs noms de fichier en argument
// Il y a déjà 2 noms de fichiers et on vient d'en trouver un 3ème
Error(ERROR_COMMAND_LINE);
Display_syntax();
exit(0);
}
else if (File_exists(argv[index]))
{
File_in_command_line=1;
File_in_command_line ++;
buffer = Realpath(argv[index], NULL);
// On récupère le chemin complet du paramètre
// Et on découpe ce chemin en répertoire(path) + fichier(.ext)
buffer=Realpath(argv[index],NULL);
Extract_path(Main_file_directory, buffer);
Extract_filename(Main_filename, buffer);
free(buffer);
chdir(Main_file_directory);
if (File_in_command_line == 1)
{
// Separate path from filename
Extract_path(Main_file_directory, buffer);
Extract_filename(Main_filename, buffer);
DEBUG(Main_filename, 0);
free(buffer);
} else {
Extract_path(Spare_file_directory, buffer);
Extract_filename(Spare_filename, buffer);
DEBUG(Spare_filename, 1);
free(buffer);
}
}
else
{
@ -548,7 +555,7 @@ int Init_program(int argc,char * argv[])
if (temp)
Error(temp);
Analyze_command_line(argc,argv);
Analyze_command_line(argc, argv);
Current_help_section=0;
Help_position=0;
@ -650,7 +657,7 @@ int Init_program(int argc,char * argv[])
// Brouillon_* et pas les infos contenues dans la page de brouillon
// elle-même ne m'inspire pas confiance mais ça a l'air de marcher sans
// poser de problèmes, alors...
if (File_in_command_line)
if (File_in_command_line == 1)
{
strcpy(Spare_file_directory,Spare_current_directory);
strcpy(Spare_filename,"NO_NAME.GIF");
@ -808,11 +815,20 @@ int main(int argc,char * argv[])
if (Config.Opening_message && (!File_in_command_line))
Button_Message_initial();
if (File_in_command_line)
switch (File_in_command_line)
{
Button_Reload();
Resolution_in_command_line=0;
}
case 2:
Button_Reload();
DEBUG(Main_filename, 0);
DEBUG(Spare_filename, 0);
Button_Page();
// no break ! proceed with the other file now
case 1:
Button_Reload();
Resolution_in_command_line = 0;
default:
break;
}
}
Main_handler();