Skip to content

Commit 880d20f

Browse files
author
Agus
committed
Now the default input and output directory is the one where the program is located
1 parent 1a6d586 commit 880d20f

6 files changed

Lines changed: 46 additions & 6 deletions

File tree

autoexec-creator.exe

1.12 KB
Binary file not shown.

libs/menu/menu.c

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,13 @@ static char* config_file_string[5];
110110
static char output_file_name[30];
111111
static char output_file_directory[255];
112112
static char input_file_directory[255];
113+
static const char* default_directory = NULL;
114+
static int using_default_directory[2];
115+
enum
116+
{
117+
INPUT_DIR,
118+
OUTPUT_DIR
119+
};
113120

114121
static void clear_stdin();
115122
static int selected_option();
@@ -201,10 +208,19 @@ static int load_input_files()
201208
{
202209
long i;
203210

211+
using_default_directory[INPUT_DIR] = 0;
204212
if(!SetCurrentDirectory(input_file_directory))
205213
{
206-
printf("\nBefore creating an autoexec file, you must first specify a valid input directory.");
207-
return 0;
214+
if(input_file_directory[0])
215+
printf("\nThe program was unable to set the input directory to: %s", input_file_directory);
216+
if((!default_directory || !SetCurrentDirectory(default_directory)))
217+
{
218+
if(default_directory && default_directory[0])
219+
printf("\nThe program was unable to set the input directory to: %s", default_directory);
220+
printf("\nBefore creating an autoexec file, you must first specify a valid input directory.");
221+
return 0;
222+
}
223+
using_default_directory[INPUT_DIR] = 1;
208224
}
209225

210226
for(i = 0; i < 4; i++)
@@ -235,10 +251,19 @@ static int create_autoexec_file(FILE** autoexec)
235251
{
236252
int default_name = 0;
237253

254+
using_default_directory[OUTPUT_DIR] = 0;
238255
if(!SetCurrentDirectory(output_file_directory))
239256
{
240-
printf("\nBefore creating an autoexec file, you must first specify a valid output directory.");
241-
return 0;
257+
if(output_file_directory[0])
258+
printf("\nThe program was unable to set the output directory to: %s", output_file_directory);
259+
if((!default_directory || !SetCurrentDirectory(default_directory)))
260+
{
261+
if(default_directory && default_directory[0])
262+
printf("\nThe program was unable to set the output directory to: %s", default_directory);
263+
printf("\nBefore creating an autoexec file, you must first specify a valid output directory.");
264+
return 0;
265+
}
266+
using_default_directory[OUTPUT_DIR] = 1;
242267
}
243268
*autoexec = fopen(output_file_name, "wb");
244269

@@ -257,7 +282,7 @@ static int create_autoexec_file(FILE** autoexec)
257282
return 0;
258283
}
259284

260-
printf("\nAutoexec file \"%s\" created in:\n\t%s", (default_name) ? default_output_file_name : output_file_name, output_file_directory);
285+
printf("\nAutoexec file \"%s\" created in:\n\t%s", (default_name) ? default_output_file_name : output_file_name, (using_default_directory[OUTPUT_DIR]) ? default_directory : output_file_directory);
261286
return 1;
262287
}
263288

@@ -276,6 +301,11 @@ void print_menu(int menu_index)
276301
fflush(stdout);
277302
}
278303

304+
void change_default_directory(const char* directory)
305+
{
306+
default_directory = directory;
307+
}
308+
279309
int main_menu()
280310
{
281311
int option = selected_option();

libs/menu/menu.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ enum
1313
};
1414

1515
void print_menu(int menu_index);
16+
void change_default_directory(const char* directory);
1617

1718
int main_menu();
1819
int create_autoexec_menu();

main.c

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,17 @@
11
#include "libs\menu\menu.h"
22
#include <stdio.h>
33

4-
int main()
4+
int main(int argc, char* argv[])
55
{
6+
int i;
7+
for(i = 0; argv[0][i]; i++);
8+
for(; i > -1 && argv[0][i] != '\\' && argv[0][i] != '/'; i--);
9+
if(i >= 0)
10+
{
11+
argv[0][i] = '\0';
12+
}
13+
change_default_directory(argv[0]);
14+
615
int current_menu = -1;
716
int next_menu = main_m;
817

obj/main.o

197 Bytes
Binary file not shown.

obj/menu.o

895 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)