Merge branch 'master' of git://factorcode.org/git/factor
commit
a807251d20
|
@ -53,8 +53,7 @@ INLINE bool factor_arg(const F_CHAR* str, const F_CHAR* arg, CELL* value)
|
|||
void init_parameters_from_args(F_PARAMETERS *p, int argc, F_CHAR **argv)
|
||||
{
|
||||
default_parameters(p);
|
||||
const F_CHAR *executable_path = vm_executable_path();
|
||||
p->executable_path = executable_path ? executable_path : argv[0];
|
||||
p->executable_path = argv[0];
|
||||
|
||||
int i = 0;
|
||||
|
||||
|
@ -106,6 +105,11 @@ void init_factor(F_PARAMETERS *p)
|
|||
/* OS-specific initialization */
|
||||
early_init();
|
||||
|
||||
const F_CHAR *executable_path = vm_executable_path();
|
||||
|
||||
if(executable_path)
|
||||
p->executable_path = executable_path;
|
||||
|
||||
if(p->image_path == NULL)
|
||||
p->image_path = default_image_path();
|
||||
|
||||
|
|
12
vm/image.c
12
vm/image.c
|
@ -112,7 +112,9 @@ bool save_image(const F_CHAR *filename)
|
|||
FILE* file;
|
||||
F_HEADER h;
|
||||
|
||||
file = OPEN_WRITE(filename);
|
||||
F_CHAR temporary_filename[] = "##saving-factor-image##";
|
||||
|
||||
file = OPEN_WRITE(temporary_filename);
|
||||
if(file == NULL)
|
||||
{
|
||||
print_string("Cannot open image file: "); print_native_string(filename); nl();
|
||||
|
@ -163,6 +165,14 @@ bool save_image(const F_CHAR *filename)
|
|||
return false;
|
||||
}
|
||||
|
||||
if(MOVE_FILE_FAILS(temporary_filename, filename))
|
||||
{
|
||||
print_string("Failed to rename tempoarary image file: "); print_string(strerror(errno)); nl();
|
||||
if(DELETE_FILE_FAILS(temporary_filename))
|
||||
print_string("Failed to clean up temporary image file: "); print_string(strerror(errno)); nl();
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -22,6 +22,8 @@ typedef char F_SYMBOL;
|
|||
#define STRCMP strcmp
|
||||
#define STRNCMP strncmp
|
||||
#define STRDUP strdup
|
||||
#define MOVE_FILE_FAILS(old,new) (rename((old),(new)) < 0)
|
||||
#define DELETE_FILE_FAILS(old) (unlink((old)) < 0)
|
||||
|
||||
#define FIXNUM_FORMAT "%ld"
|
||||
#define CELL_FORMAT "%lu"
|
||||
|
|
|
@ -19,6 +19,8 @@ typedef wchar_t F_CHAR;
|
|||
#define STRCMP wcscmp
|
||||
#define STRNCMP wcsncmp
|
||||
#define STRDUP _wcsdup
|
||||
#define MOVE_FILE_FAILS(old,new) (MoveFile((old),(new)) == 0)
|
||||
#define DELETE_FILE_FAILS(old) (DeleteFile((old)) == 0)
|
||||
|
||||
#ifdef WIN64
|
||||
#define CELL_FORMAT "%Iu"
|
||||
|
|
Loading…
Reference in New Issue